0

我正在使用不显眼的 javascript 和数据注释进行验证,并且效果很好。我决定用 DataType 属性装饰我的视图模型属性。在大多数情况下,这很好,除了 DataType.EmailAddress

当我添加这个属性时,我突然在这个字段上获得了额外的验证,这会在字段上呈现一个调用,有点像 Ajax Control 工具包中的验证调用。只有样式与正在验证的元素的厚红色边框不同,标注如下。调用还显示未在我的视图模型中指定的消息。我用于验证的正则表达式有一条错误消息“您输入的电子邮件地址无效”,而标注中的消息是“您必须输入一个有效的电子邮件地址”。我已尝试在我的解决方案中搜索此文本,但未找到。最后,我加载的唯一脚本是:

<script src="/Public/javascript/jquery-1.9.1.js" type="text/javascript"></script>
<script src="http://code.jquery.com/jquery-migrate-1.0.0.js"></script>
<script src="/Public/javascript/jquery.unobtrusive-ajax.js" type="text/javascript"></script>
<script src="/Public/javascript/jquery.validate.js" type="text/javascript"></script>
 <script src="/Public/javascript/jquery.validate.unobtrusive.js" type="text/javascript"></script>

和CSS:

<link href="/Public/themes/ui-darkness/jquery-ui-1.9.2.custom.min.css" rel="stylesheet" type="text/css" />
<link href="/Content/PagedList.css" rel="stylesheet" type="text/css" />
    <link href="/Public/css/reset.css" rel="stylesheet" type="text/css" />

我还使用@Html.EditorFor 在整个视图中呈现我的所有字段。

任何人都可以阐明正在发生的事情吗?这个标注来自哪里?我可以禁用它吗?我可以使用它并将其用于我的其他领域吗?我应该删除 DataType.EmailAddress 吗?

4

1 回答 1

4

在 ASP.NET MVC 4 中,当您使用 装饰属性时[DataType(DataType.EmailAddress)],相应的 EditorFor 将生成带有 的输入字段type="email"

<input type="email" name="foo" value="bar@baz.com" />

这是一些现代浏览器支持的 HTML5。因此,如果您碰巧使用现代浏览器浏览您的网站,则此验证会自动内置。它与 ASP.NET MVC 完全无关。当然,如果浏览器不理解该type="email"字段,它只会将其视为简单的文本字段。

以谷歌浏览this fiddle out器为例。

于 2013-07-16T06:12:55.683 回答