在我看来,如果字段中有错误,我需要设置一个字段以突出显示红色。我从控制器传递了一个错误字段列表,如果有匹配项,则有条件地将类设置为 errorField:
<td>@(cssClass = errorFields.Contains("Field1") ? "errorField" : "") <input type="text" id="field1" name="field1" value="@form.Field1" class="@cssClass" style="width: 5em;" /></td>
这适用于设置类值,但问题是我也将其渲染为:
<td>errorField <input...>
显然,我不希望 errorField 在那里呈现。如何防止这种行为?我可以将它包装在一个隐藏的 div 中,但我觉得这只是修复它的一种 hacky 方式(当然,我处理条件 CSS 的方式可能首先是 hacky)。
编辑:
根据大卫的回答,这就是我处理它的方式:
在模型中,我添加了 List ErrorFields 属性。还添加了与 David 给出的基本相同的方法,除了由于它处理不同的字段,它是:
public string ErrorCode(string field)
{
return ErrorFields.Contains(field) ? "errorField" : "");
}
控制器没有将错误字段传递给 ViewBag,而是将其传递给模型中的 ErrorFields。
在视图中,基本上就像大卫给出的那样:
class="@form.ErrorCode("Field1")"
它运行正常。