2010-11-12 8 views
38

Ich benutze Client-Seite Validierung und ich möchte die Nachricht unten nur anzeigen, wenn ich einen Fehler habe. Ich versuche, einen allgemeinen Fehler zu verwenden, falls ein Feld ungültig ist.
DerzeitHtml.ValidationSummary (false, "Nachricht") wird immer angezeigt, auch beim Laden der Seite

"* bezeichnet Pflichtfeld"

immer noch vor der Validierung angezeigt wird.

<%: Html.ValidationSummary(false, "* denotes required field.")%> 

Ich verwende Modellbindung, um Validierung auf Clientseite und MVC durchzuführen.

Antwort

71

Wenn Sie ein Entwickler-Tool in Ihrem Browser verwenden, um den Überprüfungszusammenfassungstext zu überprüfen, sehen Sie, dass es die Klasse validation-summary-valid hat, wenn es klar ist, aber validation-summary-errors, wenn Formularfehler vorliegen.

Erstellen Sie daher einfach eine CSS-Regel wie folgt;

.validation-summary-valid { 
    display:none; 
} 

und alles sollte gut sein.

+20

Warum ist das nicht im Standard-Stylesheet? –

+1

Und warum in aller Welt benötigt das Framework eine einzige Nachricht, um gültige und ungültige Modelle zusammenzufassen? –

+2

Nun, wenn die clientseitige Validierung aktiviert ist, können sie das div nicht wie bei serverseitig von der Seite entfernen, da die js es in der Lage sein muss, es anzuzeigen und auszublenden. Sie hätten einfach display verwenden können: none, um es zu verstecken, aber stattdessen haben sie eine Klasse verwendet, die Ihnen mehr Kontrolle über das Styling gibt (auf Kosten der Einrichtung einer Stylesheet-Regel). –

4

Ich denke, das Problem ist die Tatsache, dass die Html.ValidationSummary vor der Html.BeginForm erscheinen muss, sonst wird die Nachricht immer angezeigt.

+1

Das funktionierte für mich. –

+2

Aber wenn Sie das tun, verlieren Sie die clientseitige Überprüfung. –

+3

Das Verschieben von Html.ValidationSummary über Html.BeginForm hat dazu geführt, dass es nicht mehr angezeigt wird (MVC 4/Razor). – SushiGuy

0

Zunächst habe ich auf der Seite nach einer List-Eigenschaft suchen, so dass ich darüber nachdachte, ein neues Modell zu übergeben. Dann erschien die Validierungsübersicht. Als ich von

meinen Code geändert
return View(new myModel) 

zu

return View() 

die Validierung Zusammenfassung nicht auf Get erscheinen. Ich habe auch eine Null-Überprüfung des Modells hinzugefügt, als ich die Eigenschaft überprüft habe, um den letzteren Code zu verwenden.

Verwandte Themen