我的模型类中有以下数据注释:
[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>
你能建议解决方案吗?
答案 0 :(得分:4)
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>
答案 1 :(得分:0)
LabelFor没有允许你设置CSS的重载,你可以设置lambda或Lambda和文本。
当我删除“新{@class =”lbl“}”部分并运行您的代码时,我会进行验证工作 细
编辑:道歉,我最初的测试是使用EditorFor,我的机器文化设置为美国,所以它运作良好。
您可以将webconfig中的全球化文化设置为使用mm \ dd \ yyyy的正确文化。
<globalization culture="en-us" />
但这将在整个网站上生效(包括数字,日期,货币等格式),所以如果这是一个有限的案例,那么这可能不是您问题的解决方案。