2017-01-25 298 views
0

コントローラから私のModelStateにいくつかのエラーメッセージを追加していますので、私のビューに表示することができます。私のコードは、このModelStateからキー名で値を取得

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

のようなもので、私の見解で、私はこのアプローチの1つの問題は、それは私が唯一にしたいModelStateエラーのすべての種類を表示している、ということである。この

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

ようにそれを表示していますキーMyErrorでエラーメッセージを表示します。どうすればいい?

+3

だけ持っていないのはなぜ '@ Html.ValidationMessage(「MyError」)'ビューでそれを表示するには?しかし、エラーはあなたのモデル( 'PhoneNumber'?)のプロパティに関連しているようですので、' ModelState.AddModelError( "PhoneNumber"、 "...."); 'と' @ Html.ValidationMessageFor(m => m。 PhoneNumber) ' –

答えて

2

次のようなキーを反復処理することができます

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

あなたは自動的にモデル状態から検証メッセージを表示するように@Html.ValidationSummary(true, "", new { @class = "some_error_class" })を追加することができます。

divにラップされた@Html.BeginForm({...}) {コールの直後に追加できます。

次のように定義されたエラーのみを表示するようにfalseに設定し、同様に制御エラーを表示しますtrueパラメータ:ModelState.AddModelError("", "My custom error message");

関連する問題