我正在尝试 MVC 的数据类型属性,并创建了一个简单的场景,如下所示:
观点:_
@model MVC4.Models.Model
@{
ViewBag.Title = "DataTypeAttribute";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
<h2>DataTypeAttribute</h2>
@using (Html.BeginForm("SubmitData", "Home"))
{
<div>
@Html.ValidationSummary()
</div>
@Html.EditorFor(m => m.Email)
<br />
<br />
@Html.EditorFor(m => m.PostalCode)
<br />
<br />
@Html.EditorFor(m => m.TextOnly)
<br />
<br />
<button type="submit">Submit</button>
}
型号:_
public class Model
{
[DataType(DataType.EmailAddress)]
[Required]
//[EmailAddress]
public string Email { get; set; }
[DataType(DataType.PostalCode)]
public string PostalCode { get; set; }
public string TextOnly { get; set; }
}
“SubmitData”只是一个控制器,如果 ModelState.IsValid 为 false,则返回 View(..., model)。
尽管这样的帖子在解决 Html.TextBoxFor 和 Html.EditorFor 之间的差异方面做得很好,但我找不到关于为什么使用TextBoxFor时对数据类型 EmailAddress的验证不起作用的答案。我确实发现提到 TextBoxFor 的人没有考虑元数据,而 EditorFor 则考虑了元数据。
但这有意义吗?所以 TextBoxFor 不提供对客户端验证的支持?!
我想知道两者之间差异的原因是什么?