コントローラのモデルからの検証メッセージへのアクセス

ModelState変数を使用してコントローラのモデルの検証メッセージにアクセスするにはどうすればよいですか?

0

2 答え

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;
    }
}
1
追加された
@ SLaks、はい、特定のニーズに応じて多くのことが可能です。
追加された 著者 Darin Dimitrov,
または、それらのすべてを Join()することもできます。
追加された 著者 SLaks,

ModelState ["PropertyName"]。エラーコレクションを確認してください。

0
追加された