MVC 数据验证收集代码
控制器 Home
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc; namespace MvcApplication3.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "修改此模板以快速启动你的 ASP.NET MVC 应用程序。"; return View();
} /// <summary>
/// 检查用户名是否有重复
/// </summary>
/// <param name="userName">用户在页面(视图)表单中输入的UserName</param>
/// <returns>Json</returns>
public ActionResult CheckUserName(string userName)
{
bool result = true; if (userName == "admin")
result = false;//已存在 return Json(result, JsonRequestBehavior.AllowGet);
}
}
}
Model(UserInfo)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; using System.Web; using System.Web.Mvc;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace Model
{
/// <summary>
/// 这些例子就是验证的,注意此处没有客户端验证,完全是服务器端验证的,如果出错,视图会渲染再次显示,非常好用啊,很方便啊,要在以前你要写多少行代码来搞定这些繁琐无味的验证呢?微软太体恤程序员了,顶一个。
/// 在下面的例子当中,当数据发送到服务器验证不通过之后,则所有用户填写的内容在重新打开的页面后都清空了, 如果想不清空,即用户第一次填的内容还存在的话,可以return View(接受到的对象);
/// </summary>
public class UserInfo
{
public int Id { get; set; } //ID
/// <summary>
///DisplayName:指定当前字段显示的名称
///StringLength:指定允许的长度,括号里的第一个参数是最大长度,第二个参数是最小长度。最后一个参数是指:单字段值的长度不符合第一第二参数规定时候,提示错误的内容
///Required:表示当前字段是必填选项,当提交的表单缺少该值就引发验证错误。括号里的AllowEmptyStrings是: 获取或设置一个值,该值指示是否允许空字符串。单值为false的时候表示当前字段的值不能为空
///Remote:允许利用服务器端的回调函数执行客户端的验证逻辑。说白了就是支持AJAX验证。括号里的CheckUserName是Action方法。Home是控制器 ,它会调用Home控制中的CheckUserName方法来查询你所输入的用户名是否已经存在,如果存在,则提示"用户名已经存在"
/// </summary>
[DisplayName("用户名")]
[Required(AllowEmptyStrings = false, ErrorMessage = "用户名不能为空")]
[StringLength(, MinimumLength = , ErrorMessage = "用户名长度必须在{2}和{1}位之间")]
[Remote("CheckUserName", "Home", ErrorMessage = "用户名已经存在")]
public string UserName { get; set; } //用户名 [DisplayName("用户密码")]
[DataType(DataType.Password)] //将密码已*号的形式来显示
[Required(AllowEmptyStrings = false, ErrorMessage = "密码不能为空")]
[StringLength(, MinimumLength = , ErrorMessage = "密码长度必须在{2}和{1}位之间")]
public string UserPassword { get; set; } //用户密码 [DataType(DataType.Password)]
[System.ComponentModel.DataAnnotations.Compare("UserPassword", ErrorMessage = "密码不一致")]
[DisplayName("请再次确认密码")]
public string TUserPassword { get; set; } //再次输出密码 /// <summary>
/// RegularExpression:表示当前字段的值要符合一个正则表达式。如果不能匹配,则报一个验证错误。ErrorMessage的内容就是验证错误的具体信息。
/// </summary>
[Display(Name = "邮箱")] //也可以写成 [DisplayName("邮箱")]
[Required(AllowEmptyStrings = false, ErrorMessage = "邮箱不能为空")]
//[DataType(DataType.EmailAddress, ErrorMessage = "xxxxxxxx")] //其实也可以用以下的正则表达式来验证邮箱
[RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9]+\.[A-Za-z]{2,4}", ErrorMessage = "{0}的格式不正确")]
public string Email { get; set; } //邮箱 [DisplayName("请再次确认邮箱")]
[System.ComponentModel.DataAnnotations.Compare("Email", ErrorMessage = "两次输入的邮箱不一致")]
//[DataType(DataType.EmailAddress, ErrorMessage = "请输入有效的邮箱地址")]
public string TEmail { get; set; } //再次输入邮箱 [DisplayName("身份证")]
[RegularExpression(@"\d{17}[\d|x]|\d{15}", ErrorMessage = "身份证号码格式错误")]
public string IdentityNo { get; set; } //身份证号 /// <summary>
/// Range:用来指定数值类型值的最小值和最大值。括号里的第一个数的“最小值”第二个参数是“最大值”
/// </summary>
[DisplayName("年龄")]
[Required(AllowEmptyStrings = false, ErrorMessage = "年龄不能为空")]
[Range(, , ErrorMessage = "您输入的年龄不符合规范,年龄应该在{1}-{2}之间")]
public int Age { get; set; } //年龄 /// <summary>
/// DisplayFormat:用来处理属性的各种格式化选项。当属性包含空值时,可以提供可选的显示文本,也可以为包含标记的属性关闭HTML编码,还可以为运行时指定一个应用于属性值的格式化字符串。
/// </summary>
[DisplayName("金额")]
[DataType(DataType.Currency)] //Currency:表示货币值
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:c}")]
[Required(ErrorMessage = "金额不能为空")]
[Range(typeof(decimal), "20.0", "30.0", ErrorMessage = "金额在{1}和{2}之间")]
public decimal Money { get; set; } //金额 [Display(Name = "手机号码")]
[DataType(DataType.PhoneNumber)]
[RegularExpression(@"((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)", ErrorMessage = "格式不正确")]
public int Phome { get; set; } [Display(Name = "生日")]
//[DisplayFormat(ApplyFormatInEditMode=true,DataFormatString="yyyy/MM/dd")]
[Required] //当前字段的值不能为空
public DateTime Birthday { get; set; } //生日 [Display(Name = "备注")]
[DataType(DataType.MultilineText)] //当前字段是个多行文本
public string Remarks { get; set; } //备注 }
}
View (Index)
@model Model.UserInfo
@{
ViewBag.Title = "主页";
}
<script src="~/Scripts/jquery-1.7.1.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true) <fieldset>
<legend>UserInfo</legend> <div class="editor-label">
@Html.LabelFor(model => model.UserName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.UserName)
@Html.ValidationMessageFor(model => model.UserName)
</div> <div class="editor-label">
@Html.LabelFor(model => model.UserPassword)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.UserPassword)
@Html.ValidationMessageFor(model => model.UserPassword)
</div> <div class="editor-label">
@Html.LabelFor(model => model.TUserPassword)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.TUserPassword)
@Html.ValidationMessageFor(model => model.TUserPassword)
</div> <div class="editor-label">
@Html.LabelFor(model => model.Email)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Email)
@Html.ValidationMessageFor(model => model.Email)
</div> <div class="editor-label">
@Html.LabelFor(model => model.TEmail)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.TEmail)
@Html.ValidationMessageFor(model => model.TEmail)
</div> <div class="editor-label">
@Html.LabelFor(model => model.IdentityNo)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.IdentityNo)
@Html.ValidationMessageFor(model => model.IdentityNo)
</div> <div class="editor-label">
@Html.LabelFor(model => model.Age)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Age)
@Html.ValidationMessageFor(model => model.Age)
</div> <div class="editor-label">
@Html.LabelFor(model => model.Money)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Money)
@Html.ValidationMessageFor(model => model.Money)
</div> <div class="editor-label">
@Html.LabelFor(model => model.Phome)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Phome)
@Html.ValidationMessageFor(model => model.Phome)
</div> <div class="editor-label">
@Html.LabelFor(model => model.Birthday)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Birthday)
@Html.ValidationMessageFor(model => model.Birthday)
</div> <div class="editor-label">
@Html.LabelFor(model => model.Remarks)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Remarks)
@Html.ValidationMessageFor(model => model.Remarks)
</div> <p>
<input type="submit" value="Create" />
</p>
</fieldset>
} <div>
@Html.ActionLink("Back to List", "Index")
</div>
最终效果

MVC 数据验证收集代码的更多相关文章
- MVC 数据验证
MVC 数据验证 前一篇说了MVC数据验证的例子,这次来详细说说各种各样的验证注解.System.ComponentModel.DataAnnotations 一.基础特性 一.Required 必填 ...
- MVC 数据验证[转]
前一篇说了MVC数据验证的例子,这次来详细说说各种各样的验证注解. 一.基础特性 一.Required 必填选项,当提交的表单缺少该值就引发验证错误. 二.StringLength 指定允许的长度 指 ...
- MVC 数据验证【转】
[转自]http://www.cnblogs.com/dozer/archive/2010/04/12/MVC-DataAnnotations.html 作者Dozer 今天在这里给大家介绍一下MVC ...
- mvc 数据验证金钱格式decimal格式验证
mvc 数据验证金钱格式decimal格式验证 首先看下代码 /// <summary> /// 产品单价 /// </summary> [Display(Name = &qu ...
- MVC数据验证
深入浅出 MVC 数据验证 2.0 [附演示源码] 今天在这里给大家介绍一下MVC的数据验证框架. 在1.0版中,很多朋友提出了怎么使用客户端验证,今天找了一些资料,发现了客户端验证的方法. 1.MV ...
- MVC数据验证使用小结
原文:MVC数据验证使用小结 描述:MVC数据验证使用小结 内容:display,Required,stringLength,Remote,compare,RegularExpression 本人最近 ...
- Hibernate Validation,Spring mvc 数据验证框架注解
1.@NotNull:不能为 Null,但是可以为Empty:用在基本数据类型上. @NotNull(message="{state.notnull.valid}", groups ...
- MVC数据验证原理及自定义ModelValidatorProvider实现无编译修改验证规则和错误信息
Asp.net MVC中的提供非常简单易用的数据验证解决方案. 通过System.ComponentModel.DataAnnotations提供的很多的验证规则(Required, StringLe ...
- 【转】ASP.NET MVC 数据验证及相关内容
原文地址:http://www.jb51.net/article/56713.htm 一.数据验证 数据验证的步骤在模型类中添加与验证相关的特性标记在客户端导入与验证相关的js文件和css文件使用与验 ...
随机推荐
- CentOS 卸载已安装软件
根据软件的安装类型,选择合适的卸载方式: 卸载前确定软件的完整的版本号:#rpm -qa ×××*#rpm -ql xxx-xxx //查找安装目录 执行卸载命令:#rpm -e xxx-xxx # ...
- The given path's format is not supported.
问题 编程以来今本没有使用input[type=file]这个控件过,今天突然使用尽然报错了,在本地chrome,firefox等其他的浏览器都是好的,唯独ie报错了.在服务器的时候,尽然chrome ...
- PeopleSoft Related Language Records
As we all know, PeopleSoft is capable of maintaining application data in multiple languages within t ...
- [leetcode]_Longest Substring Without Repeating Characters
问题:求一个字符串中最长不重复子串的长度. 直接思路:以每个字符为出发计算最长不重复子串.TLE.O(n2),HashMap存储字符出现的位置. 代码: public int lengthOfLong ...
- 错记-checkbox radio
很多时候我想会用到浏览器默认的单选按钮或者复选框,比如说偷懒的时候或者心情不好的时候╮(╯﹏╰)╭, 在html结构里我想实现点击文字旁边的单选按钮就跟着选中或反之,像这样:
- VLC 重新编译第三方库的预编译包contrib
VLC的引用了很多开源的第三方库,均放到VLC目录下的contrib中(本来开始编译是2.1.x以上版本,以前或以后可能会变化),在Windows版本编译中,contrib文件夹中仅仅下载VLC官网上 ...
- 【推介】GitHub
隆重推介:GitHub(https://github.com/) 作为开源代码库以及版本控制系统,Github拥有140多万开发者用户. 随着越来越多的应用程序转移到了云上,Github已经成为了管理 ...
- linux下的声卡驱动架构
1.linux下的声卡驱动架构主要分为OSS架构和ALSA架构. 2.OSS架构 OSS全称是Open Sound System,叫做开放式音频系统,这种早期的音频系统这种基于文件系统的访问方式,这意 ...
- TextSwitcher,译为文字转换器控件
ViewSwitcher仅仅包含子类型TextView.TextSwitcher被用来使屏幕上的label产生动画效果.每当setText(CharSequence)被调用时,TextSwitcher ...
- Android开发遇到的异常及解决办法
Android开发遇到的错误及解决方法1. Unable to resolve target 'android-7' 解决方案: 修改工程目录下的default.properties文件里的内容tar ...