我的模型类中有以下dataannotation:
[Required(ErrorMessage = "Required")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
public DateTime DateOfBirth { get; set; }当我在我的视图中使用以下命令时,我没有得到验证错误:
<tr>
<td>@Html.LabelFor(x => x.DateOfBirth, new { @class = "lbl" }, "Date Of Birth") </td>
<td>@Html.TextBoxFor(x => x.DateOfBirth, new { @class = "w100 _dob" })
<br>@Html.ValidationMessageFor(x => x.DateOfBirth)
</td>
</tr>你能建议一下解决方案吗?
发布于 2011-08-03 23:30:17
DisplayFormat属性与验证无关。它仅用于格式化显示在视图上的值。如果要验证用户在相应输入字段中输入的值,则必须编写自定义模型绑定器。
顺便说一句,DisplayFormat属性与Html.EditorFor帮助器结合使用,它对您正在使用的Html.TextBoxFor帮助器没有任何影响:
<tr>
<td>
@Html.LabelFor(x => x.DateOfBirth, "Date Of Birth")
</td>
<td>
@Html.EditorFor(x => x.DateOfBirth)
<br/>
@Html.ValidationMessageFor(x => x.DateOfBirth)
</td>
</tr>发布于 2011-08-03 23:28:21
LabelFor没有允许您设置CSS的重载,您可以设置lambda或Lambda和文本。
当我删除"new { @class = "lbl“}”部分并运行您的代码时,验证工作正常。
编辑:很抱歉,我最初的测试使用的是EditorFor,而我的机器文化设置为美国,所以它工作得很好。
您可以将webconfig中的全球化区域性设置为使用mm\dd\yyyy的正确区域性,例如。
<globalization culture="en-us" />但这将影响整个网站(包括数字、日期、货币等的格式),所以如果这是一个有限的案例,那么这可能不是你问题的解决方案。
https://stackoverflow.com/questions/6921928
复制相似问题