客户端/服务器使用 ASP.NET MVC 验证通用数据类型(电子邮件地址)

Client/Server Validate Common Data Types (e-mail address) with ASP.NET MVC

提问人:shannon 提问时间:7/11/2011 更新时间:7/11/2011 访问量:650

问:

在客户端和服务器上验证常见数据类型(例如电子邮件地址、日期、电话号码)的首选方法是什么(具有最少的自定义代码,理想情况下可以移植到计划中的未来 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此外,它不包括电话号码或美国电话号码。

有更好的方法吗?

asp.net-mvc-3 jquery-validate 数据注释 unobtrusive-javascript

评论


答:

2赞 user571646 7/11/2011 #1

您是否了解 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

评论

0赞 shannon 7/13/2011
谢谢。我不知道。它看起来类似于 data-annotations-extensions。我现在正在看它。