Search code examples
c#asp.net-mvc

Get value from ModelState with key name


I am adding some error messages to my ModelState from controller so that I can display it in my view. My Code is like this.

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

And in my view I am displaying it like this

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>
        }
    }
}

One issue with this approach is that, it is displaying all kind of ModelState errors where I want only to show error messages with a key MyError. How can I make this?


Solution

  • You can iterate through keys like this:

    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
            //...
        }
    }