提问人:shannon 提问时间:7/11/2011 更新时间:7/11/2011 访问量:650
客户端/服务器使用 ASP.NET MVC 验证通用数据类型(电子邮件地址)
Client/Server Validate Common Data Types (e-mail address) with ASP.NET MVC
问:
在客户端和服务器上验证常见数据类型(例如电子邮件地址、日期、电话号码)的首选方法是什么(具有最少的自定义代码,理想情况下可以移植到计划中的未来 MVC 版本,而无需额外的小部件)?
我的研究
我将列出一些我见过的方法,大约从最差到最好(恕我直言)。我目前正在使用列出的最后一种方法。在这篇文章中,我将重点介绍电子邮件验证,以保持清晰。
正则表达式和/或自定义验证属性
我知道jQuery验证包括一些常见的数据类型,包括电子邮件,并且存在其他插件可供下载(例如整数,最大字数)。因此,这里的自定义正则表达式不是正确的答案。
我知道如何在服务器和客户端从头开始编写自定义验证器,甚至在使用不显眼的连接器时将现有的客户端规则“调整”为自定义属性。http://bradwilson.typepad.com/blog/2010/10/mvc3-unobtrusive-validation.html 但对于电子邮件地址这样的常见类型来说,它可能没有意义。
也可能扩展正则表达式规则,如:http://www.pagedesigners.co.nz/2011/02/asp-net-mvc-3-email-validation-with-unobtrusive-jquery-validation/
重写 STOCK DataType 属性验证程序
.NET 包括 [System.ComponentModel.DataAnnotations.DataType(DataType.EmailAddress)] 这会导致客户端或服务器上的验证始终成功,并且实际上仅用于设置显示字符串格式的切线目的。可以覆盖始终成功的验证,如下所示:http://weblogs.asp.net/srkirkland/archive/2011/02/15/adding-client-validation-to-dataannotations-datatype-attribute.aspx
MVC 数据验证扩展(通过 NUGET)
几个月前发布了一个 NuGet 可下载的验证扩展,我目前正在使用它,但我惊讶地发现它没有利用现有的 DataAnnotations.DataType 枚举。这让我想知道我是否应该在这里避免一些发展分歧。http://weblogs.asp.net/srkirkland/archive/2011/02/23/introducing-data-annotations-extensions.aspx此外,它不包括电话号码或美国电话号码。
有更好的方法吗?
答:
您是否了解 MVC 3 Futures Validation 属性 ASP.NET http://weblogs.asp.net/imranbaloch/archive/2011/02/05/new-validation-attributes-in-asp-net-mvc-3-future.aspx
评论