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

Asp.net mvc 客户端/服务器使用ASP.NET MVC验证通用数据类型(电子邮件地址),asp.net-mvc,asp.net-mvc-3,jquery-validate,data-annotations,unobtrusive-javascript,Asp.net Mvc,Asp.net Mvc 3,Jquery Validate,Data Annotations,Unobtrusive Javascript,在客户端和服务器上验证通用数据类型(如电子邮件地址、日期、电话号码)的首选方法是什么(具有最少的自定义代码,理想情况下可移植到计划的未来版本的MVC,而无需额外的小部件) 我的研究 我将列出一些我见过的方法,大致从最坏到最好(IMHO)。我目前正在使用列出的最后一种方法。在这篇文章中,我将重点讨论电子邮件验证,以保持清楚 正则表达式和/或自定义验证属性 我知道jQueryValidate包含一些常见的数据类型,包括电子邮件,还有其他可供下载的插件(例如integer、max words)。所以

在客户端和服务器上验证通用数据类型(如电子邮件地址、日期、电话号码)的首选方法是什么(具有最少的自定义代码,理想情况下可移植到计划的未来版本的MVC,而无需额外的小部件)


我的研究 我将列出一些我见过的方法,大致从最坏到最好(IMHO)。我目前正在使用列出的最后一种方法。在这篇文章中,我将重点讨论电子邮件验证,以保持清楚

正则表达式和/或自定义验证属性

我知道jQueryValidate包含一些常见的数据类型,包括电子邮件,还有其他可供下载的插件(例如integer、max words)。所以这里的自定义正则表达式不是正确的答案

我知道如何从头开始在服务器和客户机上编写自定义验证器,甚至在使用不引人注目的连接器时,如何将现有的客户端规则“适应”到自定义属性。 但对于像电子邮件地址这样的普通类型来说,这可能没有意义

也不可能扩展正则表达式规则,如:

覆盖股票数据类型属性验证器

.NET包括[System.ComponentModel.DataAnnotations.DataType(DataType.EmailAddress)] 这会导致始终在客户端或服务器上成功进行验证,并且仅在格式化显示字符串时才真正有用。可以覆盖始终成功验证,如下所示:

MVC数据验证扩展(通过NUGET)

几个月前发布了一个NuGet可下载的验证扩展,我目前正在使用它,但我惊讶地发现它没有利用现有的DataAnnotations.DataType enum。这让我想知道,这里是否存在一些我应该避免的发展分歧。 此外,它不包括电话号码或美国电话号码


有更好的方法吗?

您知道ASP.NET MVC 3期货验证属性吗,

谢谢。我不知道。它看起来类似于数据注释扩展。我现在正在看。