Hallo zusammen
Ich bin gerade dabei ein erstes Projekt mit ASP .NET MVC3 zu realisieren und habe dazu auch schon eine erste Frage :-p
Ich habe ein Formular in welchem ich Fehler mit @Html.ValidationSummary() anzeige. Nun ist es aber so, dass diese Fehler auch schon bereits beim ersten Visit des Formulars angezeigt werden (also bevor überhaupt Daten per POST Befehl an den Webserver gesendet wurden). Wie kann ich das verhindern? (Ich könnte es natürlich problemlos ausprogrammieren, aber ich bin sicher, MVC hat da bereits einen Mechanismus?
Vielen Dank im Voraus und beste Grüsse
Html.ValidationSummary( true )
Alternativ einen CustomValidationSummary erstellen, da das HTML-Grundgerüst immer erstellt wird.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
hmm dann kommt der Fehler aber auch nicht mehr, NACHDEM ich ungültige Daten per POST gesendet habe.
P.S.
Mit den ValidationMessageFor habe ich übrigens genau dasselbe Problem.
ValidationSummary zeigt nur die Fehler an, die nicht auf eine spezifische Property im ModelState stehen.
ModelState.AddModelError("", "Dieser Fehler steht im Summary");
ModelState.AddModelError("MyModelProperty", "Dieser Fehler steht nicht im Summary");
Ach da fällt mir was auf.....Wie zeigst Du denn die erste View an?
Mit return View(new MyModel())
oder return View()
? Zweiteres wäre richtig. Ansonsten wäre der ModelState bereits gefüllt.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ist ersteres, weil wenn ich zweiteres mache ist das ViewModel null
Hab das jtzt mal geänder. Das Problem ist einfach folgendes:
@if(Model != null && !ViewData.ModelState.IsValid){
<td>@Html.ValidationMessageFor(m => m.Username)</td>
}
Muss das so kompliziert sein? Gibt es keine Möglichkeit, dass ValidationMessageFor kein Fehler macht, wenn Model = null ist?
Das ist kein Problem. Die HtmlHelper können damit umgehen - bei manuellem Vorgehen musst Du natürlich das Model vorher auf null
prüfen. Aber Deine Fehlerquelle hast Du nun lokalisiert.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code