使用键名

时间:2017-01-25 06:55:08

标签: c# asp.net-mvc

我正在从控制器向我的ModelState添加一些错误消息,以便我可以在我的视图中显示它。我的代码是这样的

ModelState.AddModelError(key: "MyError", errorMessage: "This phone number is already in use. Please register with a different phone number.");

在我看来,我正在显示它

foreach (ModelState modelState in ViewData.ModelState.Values)
{     
    var errors = modelState.Errors;
    if (errors.Any())
    {
        foreach (ModelError error in errors)
        {
            <p class="common-error">@error.ErrorMessage</p>
        }
    }
}

这种方法的一个问题是,它显示所有类型的ModelState错误,我只希望用密钥MyError显示错误消息。我该怎么做?

2 个答案:

答案 0 :(得分:3)

您可以迭代这样的键:

foreach (var modelStateKey in ViewData.ModelState.Keys)
{
    //decide if you want to show it or not...
    //...

    var value = ViewData.ModelState[modelStateKey];
    foreach (var error in value.Errors)
    {
        //present it
        //...
    }
}

答案 1 :(得分:0)

您可以添加@Html.ValidationSummary(true, "", new { @class = "some_error_class" })以自动显示模型状态的验证消息。

您可以在@Html.BeginForm({...}) {调用之后添加它,包含在div中。

true参数也会显示控件错误,并将其设置为false以仅显示如下定义的错误:ModelState.AddModelError("", "My custom error message");