将DataTypeAttribute与DataType.EmailAddress一起使用而不进行验证

时间:2015-06-15 19:42:26

标签: html5 validation asp.net-mvc-5 data-annotations

查看有关[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指定自定义验证邮件,但这不是我的问题。

我想我正在寻找

  1. 添加到Web知识库,尽管该属性可能不会 用于验证,它确实包含它(如果确实如此)
  2. 问,&#34;有没有办法禁用此验证?&#34;
  3. 了解为什么,如果它要验证,哪个有意义,因为DataTypeAttribute继承自ValidationAttribute,它是否忽略了ErrorMessage参数?这似乎是一个错误。它基本上说,&#34;我是一个验证属性...但只是一点点&#34;。
  4. 注意:我在测试期间启用了不显眼的客户端验证。

    修改
    所以我决定再做一次测试。我从我的页面中删除了jquery.validate.js和jquery.validate.unobtrusive.js。现在我可以提交一个无效的电子邮件地址,并且ModelState.IsValid为true;它不验证电子邮件地址格式。所以这可能是客户端验证脚本的错误。

0 个答案:

没有答案