一.什么是Model验证
Asp.Net MVC 采用Model绑定为目标Action生成相应的参数列表,但是在Action方法执行前,还要对绑定的参数进行验证,我们就把这种带参数的验证称之为Model验证。
二.正文
下面直接上简单Demo操作
第一步:模型验证就要建Model 并加属性验证


1 public class Person
2 {
3 [Key]
4 public int pid { get; set; }
5
6 [Required(ErrorMessage = "必填")]
7 [StringLength(20, MinimumLength = 4, ErrorMessage = "{2}到{1}个字符")]
8 [Display(Name = "用户名")]
9 public string pname { get; set; }
10
11 [Required(ErrorMessage = "必填")]
12 [Display(Name = "生日")]
13 [DataType(DataType.DateTime)]
14 public DateTime pbirthday { get; set; }
15
16 [Required(ErrorMessage = "必填")]
17 [Display(Name = "地址")]
18 [StringLength(20, MinimumLength = 4, ErrorMessage = "{2}到{1}个字符")]
19 public string paddress { get; set; }
20
21 [Required(ErrorMessage = "必填")]
22 [Display(Name = "邮箱")]
23 [DataType(DataType.EmailAddress)]
24 public string Email { get; set; }
25 }View Code
第二步:配置模型验证需要的js
首先打开 网站目录下App_Start文件夹----->BundleConfig.cs (如果有的话就不用配置)


1 bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
2 "~/Scripts/jquery-{version}.js"));
3
4 bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
5 "~/Scripts/jquery.unobtrusive*",
6 "~/Scripts/jquery.validate*"));View Code
第三步:在布局页中进行引入


1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
5 <meta charset="utf-8" />
6 <meta name="viewport" content="width=device-width, initial-scale=1.0">
7 <title>@ViewBag.Title - 我的 ASP.NET 应用程序</title>
8 @Styles.Render("~/Content/css")
9 @Scripts.Render("~/bundles/jquery", "~/bundles/modernizr", "~/bundles/jqueryval")
10 </head>
11 <body>
12 <div class="navbar navbar-inverse navbar-fixed-top">
13 <div class="container">
14 <div class="navbar-header">
15 <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
16 <span class="icon-bar"></span>
17 <span class="icon-bar"></span>
18 <span class="icon-bar"></span>
19 </button>
20 @Html.ActionLink("应用程序名称", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
21 </div>
22 <div class="navbar-collapse collapse">
23 <ul class="nav navbar-nav">
24 <li>@Html.ActionLink("主页", "Index", "Home")</li>
25 <li>@Html.ActionLink("关于", "About", "Home")</li>
26 <li>@Html.ActionLink("联系方式", "Contact", "Home")</li>
27 </ul>
28 @Html.Partial("_LoginPartial")
29 </div>
30 </div>
31 </div>
32 <div class="container body-content">
33 @RenderBody()
34 <hr />
35 <footer>
36 <p>© @DateTime.Now.Year - 我的 ASP.NET 应用程序</p>
37 </footer>
38 </div>
39 @Scripts.Render("~/bundles/bootstrap")
40 @RenderSection("scripts", required: false)
41 </body>
42 </html>View Code
第四步:视图部分


1 @model wahaha.Models.Person
2 @{
3 ViewBag.Title = "Index";
4 }
5
6 <h2>Index</h2>
7 @using (Html.BeginForm())
8 {
9 <div class="form-horizontal">
10 <h4>用户注册</h4>
11 <hr />
12 @Html.ValidationSummary(true)
13 <div class="form-group">
14 @Html.LabelFor(model => model.pname, new { @class = "col-md-2 control-label" })
15 <div class="col-md-10">
16 @Html.EditorFor(model => model.pname)
17 @Html.ValidationMessageFor(model => model.pname)
18 </div>
19 </div>
20
21 <div class="form-group">
22 @Html.LabelFor(model => model.pbirthday, new { @class = "col-md-2 control-label" })
23 <div class="col-md-10">
24 @Html.EditorFor(model => model.pbirthday)
25 @Html.ValidationMessageFor(model => model.pbirthday)
26 </div>
27 </div>
28
29 <div class="form-group">
30 @Html.LabelFor(model => model.paddress,new { @class = "col-md-2 control-label" })
31 <div class="col-md-10">
32 @Html.EditorFor(model => model.paddress)
33 @Html.ValidationMessageFor(model => model.paddress)
34 </div>
35 </div>
36 <div class="form-group">
37 @Html.LabelFor(model => model.Email,new { @class = "col-md-2 control-label" })
38 <div class="col-md-10">
39 @Html.EditorFor(model => model.Email)
40 @Html.ValidationMessageFor(model => model.Email)
41 </div>
42 </div>
43 <hr />
44 <div class="form-group">
45 <div class="col-md-offset-2 col-md-10">
46 <input type="submit" value="注册" class="btn btn-default" />
47 </div>
48 </div>
49 </div>
50 }View Code
第五步:运行项目



一个简单的demo完成。
















