[MVC4]Data Annotations Extensions:无法使用EmailAddress等验证特性的解决方法
本文地址:http://www.cnblogs.com/egger/p/3404159.html 欢迎转载 ,请保留此链接๑•́ ₃•̀๑!
数据注解(Data Annotations)
Web应用开发中表单验证是是一个系统必不可少的功能!我们可以通过将验证逻辑写在action方法中(不推荐)来实现。MVC提供了数据注解(Data Annotations)功能,相比前者,它更省时、提高验证逻辑的复用、减少action方法的复杂度。通过数据注解(Data Annotations) 与 jquery.validate 的结合实现服务端和客户端的双重验证。Model是自验证的, 我们要只需给Model类的各属性加上对应的验证特性(Attributes)就可以让MVC框架帮我们完成验证。甚是方便。
情景:EmailAddress特性不能用?
今天MVC4学习中按照示例给一个属性添加了 “ [EmailAddress(ErrorMessage = "We don't recognize this as a valid email address")] ”,但是程序编译报错!请看下图:

看了项目中引用的System.ComponentModel.DataAnnotations.dll中,没这个类:

不禁疑惑,难道是我配置有问题:dll引入的有问题?毕竟这里的使用不是随意的,其间尝试了许多方法,当我将项目的.NET Framework 版本由4.0改成4.5,发现错误消失了!但是这里的给的示例就是基于NET Framework 4.0!我就打开GAC中的System.ComponentModel.DataAnnotations.dll[4.0],发现有EmailAddressAttribute类的定义,然后就凌乱了[打开的方式不对吗!!!]:

然后百思不得其解,就有了这个提问 http://q.cnblogs.com/q/56482/ 。这里感谢 【Arnold】的回答,知道了怎么去解决这个问题!要想使用需要引用DataAnnotationsExtensions库。
using DataAnnotationsExtensions;
...
[Required]
[Email]
public string Email { get; set; }
通过Nuget下载DataAnnotationsExtensions类库

页面引入DataAnnotationsExtensions,将EmailAddress改成Email编辑通过,运行效果:

DataAnnotationsExtensions类库
官网传送门:http://dataannotationsextensions.org/
Github传送门:https://github.com/srkirkland/DataAnnotationsExtensions
DataAnnotationsExtensions类库对内置DataAnnotations验证特性(Required, Range, RegularExpression 和 StringLength)进行了扩展。
核心库提供的服务器端验证特性可用于在任何.NET 4.0项目。
这是类库提供的扩展特性:

总结
通过引入DataAnnotationsExtensions的类库方式实现Email格式的数据验证,而不用通过RegularExpression方式甚是方便!
但为什么 4.0中EmailAddressAttribute有定义但是为什么不能使用!难道是挖的坑到了4.5才填了!(知道真相的请科普下)
相关文章:
INTRODUCING DATA ANNOTATIONS EXTENSIONS http://weblogs.asp.net/srkirkland/archive/2011/02/23/introducing-data-annotations-extensions.aspx
[MVC4]Data Annotations Extensions:无法使用EmailAddress等验证特性的解决方法的更多相关文章
- session在本地可以正常使用,而在sae上却无法使用或者值为空的解决方法
session在本地可以正常使用,而在sae上却无法使用或者值为空的解决方法: session_start()放在当前页代码的第一行即可解决该问题. 在本地上session_start()如果不是放在 ...
- Token验证失败的解决方法
Token验证失败 微信 微信公众平台开发 Token校验失败 URL Token原文 http://www.cnblogs.com/txw1958/p/token-verify.html Token ...
- DEDECMS开启邮箱验证通知的解决方法
[摘要]织梦CMS是开源内容管理系统,是国内开源CMS的领先品牌,目前程序安装量已达七十万,本文介绍DEDECMS会员注册时,开启邮箱验证通知的解决方法. 在论坛上看到很多人都说这个功能没用,邮箱根本 ...
- ThinkPHP3.2中字段unique验证出错的解决方法
protected $_validate=array( array('stu_id','','学号已存在',1,'unique',1), ) 当一次插入多条数据时: 在进行循环 使用create验证时 ...
- windows 2003 远程桌面无法使用剪贴板共享纯文本的解决方法(亲测可用)
远程桌面无法使用剪贴板共享纯文本的解决方法========================================以下操作须在远程桌面上操作,本地机没用的!================== ...
- 微信token验证失败的解决方法
一.问题由来 在使用URL和Token启用微信公众平台开发模式消息接口的时候,我们会碰到下面三种情况 1. token校验失败 这样回头检查一下各项配置是否正确.如果确定配置没有问题,请按下面的方法检 ...
- .Net调用Java带验证的WebService解决方法
最近遇到了一个问题,需要通过验证用户名.密码去调用对方Java给出的WebService接口. 搜索了很多资料,没想到最终很简单就完了.... (捂脸 第一步:添加web引用 第二步:进行验证,并完成 ...
- Ubuntu中shell脚本无法使用source命令的原因与解决方法
本文简要描述了在ubuntu系统下无法使用source命令的原因,及对应的两种解决方法,并在附录中引用一篇文章来详细解释source命令的用法 问题: 由于在交叉编译时,需要在当前shell内执行so ...
- MVC中发生System.Data.Entity.Validation.DbEntityValidationException验证异常的解决方法
发生System.Data.Entity.Validation.DbEntityValidationException这个异常的时候,如果没有用特定的异常类去捕捉,是看不到具体信息的. 通常都是用Sy ...
随机推荐
- 用C++写一个没人用的ECS
github地址:https://github.com/yangrc1234/Resecs 在做大作业的时候自己实现了一个简单的ECS,起了个名字叫Resecs. 这里提一下一些实现的细节,作为回顾. ...
- 【洛谷 P3965】 [TJOI2013]循环格(费用流)
题目链接 回路限制经典题. 每个点拆成入点和出点,源点连每个点的出点,流量1,费用0,每个点出点连汇点,流量1,费用0,入点和出点之间没有边. 也就是说每个点必须靠其他点流来的流量来流入汇点,同时自己 ...
- matlab实现cart(回归分类树)
作为机器学习的小白和matlab的小白自己参照 python的 <机器学习实战> 写了一下分类回归树,这里记录一下. 关于决策树的基础概念就不过多介绍了,至于是分类还是回归..我说不清楚. ...
- 【译】msfvenom
原文链接:MSFvenom 1.使用MSFvenom命令行界面 msfvenom是Msfpayload和Msfencode的组合,将这两个工具集成在一个框架实例中. msfvenom的优点是: 一个单 ...
- centos 下单独安装mysql
https://www.cnblogs.com/running-mydream/p/4666094.html https://www.cnblogs.com/lzj0218/p/5724446.htm ...
- CGI、FastCGI和php-fpm的概念和区别
CGI是HTTP Server和一个独立的进程之间的协议,把HTTP Request的Header设置成进程的环境变量,HTTP Request的正文设置成进程的标准输入,而进程的标准输出就是HTTP ...
- HDU 3085 Nightmare Ⅱ(双向BFS)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3085 题目大意:给你一张n*m地图上,上面有有 ‘. ’:路 ‘X':墙 ’Z':鬼,每秒移动2步,可 ...
- js excel导出 前端实现(转载)
本文为转载,本人亲测可用,感谢原作者,原文在这里. 一.由于公司项目需要,需要将表格数据导出为EXCEL表格数据. 环境React+Ant Design 二.安装插件js-export-excel ...
- 什么是VC、PE、LP、GP?
天使基金主要关注原创项目构思和小型初创项目,投资规模大多在300万元以下:风险投资关注初创时期企业长期投资,规模在1000万元以下:私募股权投资主要关注3年内可以上市的成熟型企业. VC即ventur ...
- properties文件不能输入中文
先把他关掉,然后对message.properties 文件右键--属性(properties), 右边最下面一行text file encoding选择other里面的最后一个utf-8, 再点击a ...