ASP.NET MVC DataAnnotation再次出现

时间:2018-03-22 22:10:12

标签: c# asp.net-mvc asp.net-mvc-5 attributes data-annotations

即。我在页面上有一个电子邮件字段。我想在客户端上验证它(因此,无法发布无效值)和服务器端(如果禁用客户端验证)。有3个属性,与电子邮件相关联:

  1. [DataType(DataType.EmailAddress)]
  2. [EmailAddress]
  3. [RegularExpression(@"...")]
  4. 我们应该为此目的使用哪个?

    我知道,DataTypeAttribute继承自ValidationAttribute,但IsValid方法被覆盖并始终返回true: https://referencesource.microsoft.com/#System.ComponentModel.DataAnnotations/DataAnnotations/DataTypeAttribute.cs,c3a0957894bdc158

    EmailAddressAttribute继承自DataTypeAttribute并且已覆盖IsValid,但逻辑依赖于Regex。

    https://referencesource.microsoft.com/#System.ComponentModel.DataAnnotations/DataAnnotations/EmailAddressAttribute.cs,c3ae85dfd8a9f58c

    因此,无论如何,我们必须使用[EmailAddress]而不[DataType(DataType.EmailAddress)]因为[EmailAddress]扩展[DataType(DataType.EmailAddress)]

    让我们一起使用[EmailAddress][RegularExpression(@"...")]。在我看来,我们必须使用[EmailAddress],因为它有"好处"来自DataTypeAttribute。因此,正确的方法是仅使用[EmailAddress]。我是对的吗?

0 个答案:

没有答案