在我看來,如果字段中存在錯誤,我需要設置字段以突出顯示紅色。我通過字段列表中錯誤從控制器,類條件設定爲errorField如果有匹配:ASP.NET MVC - 更改字符串值在設置時呈現
<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中,但是我覺得這只是一個修復它的方法(理所當然,我處理條件CSS的方式可能首先是hacky)。
編輯:
基於大衛的答案,這是我如何着手處理它:
模型我添加了一個列表ErrorFields屬性。 也基本上加入相同的方法,得到大衛,除了由於它處理不同的字段,它是:
public string ErrorCode(string field)
{
return ErrorFields.Contains(field) ? "errorField" : "");
}
代替傳遞錯誤字段到ViewBag控制器,它把它傳遞給ErrorFields在模型內。
在視圖中,基本上如大衛給:
class="@form.ErrorCode("Field1")"
而且它適當地發揮作用。
這是應該在模型上,而不是在視圖中的類型。該視圖應該綁定到模型上的數據,模型應該在內部設置其成員。 – David
很酷。就像我說的,我覺得首先它可能是個黑客。你知道我在哪裏可以找到類似於這個使用模型正確的例子嗎? – Robert