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

本文共 4460 字,大约阅读时间需要 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://xwykm.baihongyu.com/

你可能感兴趣的文章
2018-04-27 Linux学习
查看>>
ansible+jenkins+svn实现生产环境自动发布
查看>>
Java Web学习总结(5)——HttpServletResponse对象详解
查看>>
学习笔记(13)
查看>>
curl命令使用大全
查看>>
Netty4 之 简单搭建WebSocket服务
查看>>
我的Git忽略文件
查看>>
C# 项目异常处理的总结 C# 项目异常处理的总结 .NET异常处理总结
查看>>
【易语言作品】夜猫护眼宝 PC版 大神勿喷,语言是国产的易语言!
查看>>
Java基础学习总结(3)——抽象类
查看>>
安装Apache
查看>>
WebView图片加载不完全
查看>>
解决 Sublime Text 无法使用Package Control 的问题
查看>>
ReactJS学习笔记——组件复合及表单的处理
查看>>
jquery中cookie的使用
查看>>
用javascript判断IE版本号简单实用且向后兼容
查看>>
Java_Ant详解
查看>>
AWS考证方向:五、使用key密钥连接实例
查看>>
Ganglia 安装与配置详解
查看>>
易宝典文章——怎样管理Exchange Server 2013共享邮箱
查看>>