Как можно получить доступ к сообщению проверки модели через переменную ModelState на контроллере?
string message = ModelState["SomeProperty"].Errors[0].ErrorMessage;
Конечно, проверки должны выполняться, поскольку каждый из этих аксессуаров может просто вернуть нуль. Но если вы абсолютно уверены, что SomeProperty
имеет хотя бы одно сообщение об ошибке в modelstate, это нормально.
Разумеется, эти проверки могут быть инкапсулированы в метод расширения, так что в вашем контроллере вы могли бы просто:
string message = ModelState.GetFirstErrorMessageFor("SomeProperty");
Например, например:
public static class ModelStateExtensions
{
public static string GetFirstErrorMessageFor(this ModelStateDictionary modelState, string property)
{
ModelState value;
if (!modelState.TryGetValue(property, out value))
{
return string.Empty;
}
return (value.Errors.FirstOrDefault() ?? new ModelError("")).ErrorMessage;
}
}