博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC验证12-使用DataAnnotationsExtensions对整型、邮件、最小值、文件类型、Url地址等验证...
阅读量:7049 次
发布时间:2019-06-28

本文共 4456 字,大约阅读时间需要 14 分钟。

本文体验来自的DataAnnotationsExtensions.MVC3,是DataAnnotation的扩展,可以在客户端和服务端进行双重验证,能验证的类型包括:

 

● 邮件验证

● 整型验证
● 日期验证
● 数字验证(即从零开始的数字,不包括带小数点)
● 是否相同验证
● 文件类型验证
● int类型验证(可以是负的int类型)
● 最大数值验证(数值可以带小数点,可以对负数验证)
● 最小数值验证(数值可以带小数点,可以对负数验证)
● 数值验证(可以是负数,可以带小数点,就是不能是字符串)
● url地址验证
● 年份验证
......

 

MVC验证兄弟篇:

●   
●   
●  
●   
●   
●   
●   
●   
●   
●   
●   

□ 安装

引用→右键→选择"管理NuGet程序包"→输入"DataAnnotationsExtensions"搜索→安装"DataAnnotationsExtensions.MVC3"

 

需要同时引入2个文件,DataAnnotationsExtensions用于服务端验证,DataAnnotationsExtensions.MV3用户客户端验证:

 

引入后,引用文件夹包括:

 

另外,不要被DataAnnotationsExtensions.MV3的名称疑惑,在MVC4下照样可以使用。

 

  验证邮件、整型、最小数、文件类型

□ View Model

1:  using System.ComponentModel.DataAnnotations;
2:  using DataAnnotationsExtensions;
3:   
4:  namespace MvcApplication1.Models
5:  {
6:      public class Sample
7:      {
8:          [Email(ErrorMessage = "请输入有效邮箱")]
9:          [Required(ErrorMessage = "必填")]
10:          [Display(Name = "邮箱")]
11:          public string Email { get; set; }
12:   
13:          [Integer(ErrorMessage = "必须为整数")]
14:          [Min(1, ErrorMessage = "至少为1")]
15:          [Display(Name = "年龄")]
16:          public int Age { get; set; }
17:   
18:          [DataAnnotationsExtensions.FileExtensions("png|jpg|jpeg|gif", ErrorMessage = "允许的文件类型为png|jpg|jpeg|gif")]
19:          [Display(Name = "文件类型")]
20:          public string File { get; set; }
21:      }
22:  }
23:   

 

□ 视图:必须包含与客户端验证相关的jquery,即@Scripts.Render("~/bundles/jqueryval")

1:  @model MvcApplication1.Models.Sample
2:   
3:  @{
4:      ViewBag.Title = "Index";
5:      Layout = "~/Views/Shared/_Layout.cshtml";
6:  }
7:   
8:  

Index

9:   
10:  @using (Html.BeginForm()) {
11:      @Html.ValidationSummary(true)
12:   
13:      
14:          Sample
15:   
16:          
17:              @Html.LabelFor(model => model.Email)
18:          
19:          
20:              @Html.EditorFor(model => model.Email)
21:              @Html.ValidationMessageFor(model => model.Email)
22:          
23:   
24:          
25:              @Html.LabelFor(model => model.Age)
26:          
27:          
28:              @Html.EditorFor(model => model.Age)
29:              @Html.ValidationMessageFor(model => model.Age)
30:          
31:   
32:          
33:              @Html.LabelFor(model => model.File)
34:          
35:          
36:              @Html.EditorFor(model => model.File)
37:              @Html.ValidationMessageFor(model => model.File)
38:          
39:   
40:          

41:              
42:          

43:      
44:  }
45:   
46:  
47:      @Html.ActionLink("Back to List", "Index")
48:  
49:   
50:  @section Scripts {
51:      @Scripts.Render("~/bundles/jqueryval")
52:  }
53:   

□ 结果

邮箱不符合要求报错:

年龄小于1报错:

年龄不为整型报错:

文件类型不符合要求报错:

 

  验证Url地址,比较验证

□ View Model

1:      public class Sample1
2:      {
3:          [Display(Name = "密码")]
4:          public string Password { get; set; }
5:   
6:          [Display(Name = "确认密码")]
7:          [EqualTo("Password",ErrorMessage = "密码不匹配")]
8:          public string PasswordConfirm { get; set; }
9:   
10:          [Display(Name = "Url地址")]
11:          [DataAnnotationsExtensions.Url(UrlOptions.RequireProtocol,ErrorMessage = "Url地址不符合要求")]
12:          public string HomePage { get; set; }
13:      }

 

□ 视图

1:  @model MvcApplication1.Models.Sample1
2:   
3:  @{
4:      ViewBag.Title = "Hello";
5:      Layout = "~/Views/Shared/_Layout.cshtml";
6:  }
7:   
8:  

Hello

9:   
10:  @using (Html.BeginForm()) {
11:      @Html.ValidationSummary(true)
12:   
13:      
14:          Sample1
15:   
16:          
17:              @Html.LabelFor(model => model.Password)
18:          
19:          
20:              @Html.EditorFor(model => model.Password)
21:              @Html.ValidationMessageFor(model => model.Password)
22:          
23:   
24:          
25:              @Html.LabelFor(model => model.PasswordConfirm)
26:          
27:          
28:              @Html.EditorFor(model => model.PasswordConfirm)
29:              @Html.ValidationMessageFor(model => model.PasswordConfirm)
30:          
31:   
32:          
33:              @Html.LabelFor(model => model.HomePage)
34:          
35:          
36:              @Html.EditorFor(model => model.HomePage)
37:              @Html.ValidationMessageFor(model => model.HomePage)
38:          
39:   
40:          

41:              
42:          

43:      
44:  }
45:   
46:  @section Scripts {
47:      @Scripts.Render("~/bundles/jqueryval")
48:  }
49:   

□ 结果

密码不一致报错:

 

Url地址不符合要求:

参考资料:

转载地址:http://jnpol.baihongyu.com/

你可能感兴趣的文章
ubuntu搭建nodejs生产环境——快速部署手册
查看>>
从零开始实现一个简易的Java MVC框架
查看>>
【java解惑】Unicode转义符的使用
查看>>
spring线程池ThreadPoolTaskExecutor与阻塞队列BlockingQueue
查看>>
visio图片导入word和PPT的最清晰的方式
查看>>
DataGuard 环境rman恢复主库坏块一例
查看>>
交换机真的只工作在第二层吗?
查看>>
15年编程生涯,资深架构师总结的7条经验
查看>>
echo命令
查看>>
图形语言 Kgo
查看>>
兄弟连第10节课
查看>>
调整Virtual Box硬盘大小
查看>>
Windows下Apache服务器中自动配置二级子域名
查看>>
Transform Map - Ignore Row if any fields are empty
查看>>
iEclipse-不只是Eclipse的开发者社区
查看>>
Oracle个人的一些记录
查看>>
20.分屏查看命令 less命令
查看>>
感谢付费客户不覺流年似水(271558528) 对C#ASP.NET通用权限管理组件的改进意见,已修正...
查看>>
android 让 TextView 自带滚动条
查看>>
win2003远程桌面不自动注销,自动锁定时间
查看>>