2009-10-07 10 views
9

Html.ValidationSummary() wird noch gerendert, selbst wenn der Modellzustand gültig ist.ASP.Net MVC: Render Html.ValidationSummary nur wenn es Fehler gibt

Dieses Beispiel funktioniert nicht:

<% if (!this.ViewData.ModelState.IsValid) 
{ %> 
<%= Html.ValidationSummary()%> 
<% } %> 

Es gibt immer noch einen leeren Tag gemacht zu werden 'ul' ist. Wie mache ich es render nur, wenn der ModelState nicht gültig ist?

EDIT stellte sich heraus, das Model wirklich ungültig ist, aber mein Code fügt keine Fehlermeldungen, es ohne ersichtlichen Grund nur ungültig ist.

[AcceptVerbs("POST")] 
public ActionResult Login(string username, string password, bool? remember) 
    { 
     if (string.IsNullOrEmpty(username)) 
     { 
      ModelState.AddModelError("Username", "Username is required"); 
     } 
     if (string.IsNullOrEmpty(password)) 
     { 
      ModelState.AddModelError("Password", "Password is required"); 
     } 

     if (ModelState.IsValid) 
     { 
      ; // this point is never reached 
     } 

     return View(); 
    } 

Antwort

6

Wenn die Informationen, die Sie richtig schaffen, dann this.ViewData.ModelState.IsValid ist definitiv falsch. Es muss hier einen anderen Code geben, den Sie nicht angeben.

2

Die source code besagt, dass, wenn der Modellzustand gültig ist, der Helper eine Null-Zeichenfolge zurückgibt. Ich vermute, dass Ihr Modellstatus wirklich ungültig ist, aber keine Nachricht hinzugefügt wurde. Oder es könnte sein, dass das Markup wirklich von etwas anderem auf Ihrer Seite kommt - vielleicht sogar mit Javascript.

1

Überprüfen Sie ClientValidationEnabled und UnobtrusiveJavaScriptEnabled in App-Einstellungen. Wenn Sie diese nicht verwenden, können Sie das Problem beheben.

Verwandte Themen