在我的表格中,我有:
@Html.LabelFor(m => m.Name)
@Html.ValidationMessageFor(m => m.Name)
@Html.TextBoxFor(m => m.Name, new { @class = "", placeholder = "Full Name" })
问:如何检查字段是否有效,如果其特定字段无效,则将类添加到LabelFor?
@Html.LabelFor(m => m.Name, if !valid: new { @class="error"} )
答案 0 :(得分:1)
你是沿着正确的方向行,但试试这个:
@Html.LabelFor(m => m.Name, new { @class= !ViewData.ModelState.IsValid ? "error" : ""} )
使用三元语句应该适用于这种情况,因为我在常规DIV和INPUT HTML中经常使用它们。
编辑:在StackOverflow聊天系统中与Alex聊天一段时间后,这是我提出的最终解决方案。不幸的是,Alex正在使用Unobstrusive JQuery,因此以下代码仅在未添加客户端验证时才有效。
@{
var errorCollection = new ModelErrorCollection();
if (ViewData.ModelState.Any(a => a.Value.Errors.Count > 0)) {
errorCollection = ViewData.ModelState["PropertyName"].Errors;
}
}
@Html.LabelFor(m => m.PropertyName, null, new { @class =
errorCollection.Any() ? "cssClassName" : "" })