在视图上获取所有ModelState错误

Iri*_*lho 12 html c# asp.net-mvc-3

在我的控制器中,我添加了一些ModelState错误.因此,当我渲染我的视图时,我希望获得所有这些错误并更改包含错误的字段标签的颜色.

所以,我认为我需要获取所有ModelState错误,获取字段名称然后更改颜色.这是一个好方法吗?

如何在视图中获取ModelState错误?

Ole*_*Aza 24

你可以通过它访问它ViewData.ModelState.如果您需要更多控制以及视图上的错误,您可以使用

ViewData.ModelState.IsValidField("name_of_input")

或获取包含以下错误的输入列表:

var errors = ViewData.ModelState.Where(n => n.Value.Errors.Count > 0).ToList();
Run Code Online (Sandbox Code Playgroud)


Dar*_*rov 10

在我的控制器中,我添加了一些ModelState错误.因此,当我渲染我的视图时,我希望获得所有这些错误并更改包含错误的字段标签的颜色.

如果你在模型中添加模型错误与模型中完全相同的键,那就是你在视图中使用的Html.ValidationMessageFor助手.

例如,让我们假设您的表单中包含以下代码段:

@Html.LabelFor(x => x.Bazinga)
@Html.EditorFor(x => x.Bazinga)
@Html.ValidationMessageFor(x => x.Bazinga)
Run Code Online (Sandbox Code Playgroud)

并在您的HttpPost控制器操作中,您可以添加以下错误消息,以突出显示Bazinga字段:

ModelState.AddModelError("Bazinga", "Please enter a valid value for the Bazinga field");
Run Code Online (Sandbox Code Playgroud)

如果您想添加一些与某些特定输入字段无关的通用错误消息,您可以始终使用@Html.ValidationSummary()表单顶部的帮助程序来显示它.在你的控制器动作中:

ModelState.AddModelError(string.Empty, "Some generic error occurred. Try again.");
Run Code Online (Sandbox Code Playgroud)