查看有关[DataType(DataType.EmailAddress)]
和验证的几乎所有问题,您会发现某人声明该属性不是用于验证,而是允许将该属性呈现为与DisplayFor的mailto链接或HTML 5 "电子邮件"使用EditorFor输入类型。唯一的问题是属性确实导致验证。在我的视图模型中,我有属性:
[DataType(DataType.EmailAddress, ErrorMessage="Invalid e-mail address")]
[Required]
[StringLength(256, ErrorMessage = "The email address is too long")]
public string EmailAddress { get; set; }
并在注册表格中显示为:
<div>
*E-MAIL ADDRESS
@Html.EditorFor(m => regVM.EmailAddress)
@Html.ValidationMessageFor(m => regVM.EmailAddress)
</div>
这会呈现HTML 5&#34;电子邮件&#34;类型输入,这是我想要的和我包含DataTypeAttribute的原因。但是,如果我输入值&#34; asdf&#34;在电子邮件输入中,它显示验证错误消息:Please enter a valid email address.
请注意,该属性不仅会导致验证,而且还会忽略我提供的错误消息(最初,我没有包含在相信这不是验证属性。)我知道您可以使用EmailAddressAttribute指定自定义验证邮件,但这不是我的问题。
我想我正在寻找
注意:我在测试期间启用了不显眼的客户端验证。
修改
所以我决定再做一次测试。我从我的页面中删除了jquery.validate.js和jquery.validate.unobtrusive.js。现在我可以提交一个无效的电子邮件地址,并且ModelState.IsValid为true;它不验证电子邮件地址格式。所以这可能是客户端验证脚本的错误。