在我的控制器中,我添加了一些ModelState錯誤。 因此,當我渲染我的視圖時,我想要獲取所有這些錯誤並更改包含錯誤的字段標籤的顏色。查看所有ModelState錯誤
所以,我認爲我需要得到所有的ModelState錯誤,得到字段名,然後改變顏色。這是一個好方法?
如何在我的視圖中獲取ModelState錯誤?
在我的控制器中,我添加了一些ModelState錯誤。 因此,當我渲染我的視圖時,我想要獲取所有這些錯誤並更改包含錯誤的字段標籤的顏色。查看所有ModelState錯誤
所以,我認爲我需要得到所有的ModelState錯誤,得到字段名,然後改變顏色。這是一個好方法?
如何在我的視圖中獲取ModelState錯誤?
您可以通過ViewData.ModelState
訪問它。 如果你需要對你的看法錯誤的更多的控制,你可以使用
ViewData.ModelState.IsValidField("name_of_input")
或得到的輸入列表,像這樣的錯誤:
var errors = ViewData.ModelState.Where(n => n.Value.Errors.Count > 0).ToList();
在我控制我添加一些的ModelState錯誤。所以,當我渲染我的 視圖時,我想要獲取所有這些錯誤並更改包含錯誤的字段的 標籤的顏色。
如果您在模型狀態中將模型錯誤與您在視圖中使用的Html.ValidationMessageFor幫助器完全相同的鍵添加到模型錯誤中,那麼會發生什麼情況。
因此,例如,讓我們假設你的表格你有下面的代碼片段:
@Html.LabelFor(x => x.Bazinga)
@Html.EditorFor(x => x.Bazinga)
@Html.ValidationMessageFor(x => x.Bazinga)
,並在您HttpPost控制器操作,你可以爲了突出Bazinga字段中添加以下錯誤消息:
ModelState.AddModelError("Bazinga", "Please enter a valid value for the Bazinga field");
如果你想添加這是不相關的一些特定的輸入字段,你可以總是使用@Html.ValidationSummary()
助手在表單的頂部顯示它的一些一般性錯誤消息。而在你的控制器動作:
ModelState.AddModelError(string.Empty, "Some generic error occurred. Try again.");
不錯!但我需要得到錯誤,而不是使用ValidationMessageFor。這是一個很好的例子 –
又見http://stackoverflow.com/questions/1352948/how-to-get-all-errors-from-asp-net-mvc-modelstate – Alexey