Razor:如果字段无效,则将类添加到LabelFor

时间:2014-09-14 18:10:11

标签: asp.net asp.net-mvc validation razor

在我的表格中,我有:

@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"} )

1 个答案:

答案 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" : "" })