2017-01-25 1 views
0

Ich füge einige Fehlermeldungen zu meinem ModelState vom Controller, damit ich es in meiner Ansicht anzeigen kann. Mein Code ist wie dieserHolen Wert von ModelState mit Schlüsselname

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

Und meiner Meinung nach ich es bin Anzeigen wie diese

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

Ein Problem bei diesem Ansatz ist, dass Sie wird alle Arten von ModelState Fehler anzeigt, wo ich nur wollen Fehlermeldungen mit einem Schlüssel anzeigen MyError. Wie kann ich das machen?

+3

Warum nicht einfach haben ein '@ Html.ValidationMessage („MyError“)' in Ihrer Sicht um es anzuzeigen? Aber der Fehler scheint mit einer Eigenschaft Ihres Modells ('PhoneNumber'?) In Verbindung zu stehen, also' ModelState.AddModelError ("PhoneNumber", "...."); 'und' @ Html.ValidationMessageFor (m => m. PhoneNumber) ' –

Antwort

2

Sie können durch Tasten wie folgt durchlaufen:

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

Sie können eine @Html.ValidationSummary(true, "", new { @class = "some_error_class" }) hinzufügen automatisch die Validierungen Nachrichten aus dem Modellzustand zu zeigen.

Sie können es direkt nach dem @Html.BeginForm({...}) { Anruf hinzufügen, in einem div. Verpackt.

Der true Parameter wird den Steuerfehler als auch zeigen, setzen Sie sich auf false nur Fehler wie folgt definiert zeigen: ModelState.AddModelError("", "My custom error message");