string message = ModelState["SomeProperty"].Errors[0].ErrorMessage;
もちろん、これらのアクセサーのそれぞれがnullを返すだけなので、チェックを行う必要があります。しかし、 SomeProperty
にmodelstateに少なくとも1つのエラーメッセージがあることが確実であればOKです。
これらのチェックはもちろん、拡張メソッドでカプセル化することができますので、コントローラで簡単に次のことができます:
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;
}
}