string message = ModelState["SomeProperty"].Errors[0].ErrorMessage;
Конечно, необходимо выполнить проверки, поскольку каждый из этих методов доступа может просто возвращать ноль. Но если вы абсолютно уверены, что SomeProperty
имеет хотя бы одно сообщение об ошибке в состоянии модели, все в порядке.
Эти проверки, конечно, могут быть инкапсулированы в метод расширения, чтобы в вашем контроллере вы могли просто:
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;
}
}