2016-11-16 2 views
0

Ich schreibe eine MVC Web App und ich versuche zu überprüfen, ob es Fehler in der Html.ValidationSummary gibt, um festzustellen, ob ich das div, das die Nachrichten behandelt, anzeigen muss.Wie überprüfe ich die Html.ValidationSummary auf Fehler?

@if(Html.ValidationSummary() != null) 
    { 
    <div class="registration-val-summary"> 
     <label class="registration-val-label"> 
     Please correct the following issues with your registration: 
     </label> 
     @Html.ValidationSummary() 
    </div> 
    } 

Dies ist der Fehler, die ich erhalte:

Unexpected "if" Stichwort nach Zeichen "@". Sobald Sie den Code eingegeben haben, müssen Sie keine Konstrukte wie "if" mit "@" voranstellen.

Von dem, was ich in diesem Post gelesen: Unexpected "foreach" keyword after "@" character Es ist aufgrund der "Html", die ich in meinem Code habe. Ich verstehe den Fehler, aber ich weiß nicht, wie ich damit umgehen soll. Ich möchte vermeiden, das div anzuzeigen, das die ValidationSummary umschließt, es sei denn, dass tatsächlich Fehler angezeigt werden, andernfalls wird die Nachricht zu dem Korrigieren Ihres Fehlers angezeigt und mein Formular verschiebt.

Wie kann ich dies ausblenden, wenn ValidationSummary keine anzuzeigenden Meldungen enthält?

+0

Der Fehler zu tun ist, weil Ihr '@if (Html.ValidationSummary()! = Null) {...}' Block innerhalb eines anderen Codeblocks (wahrscheinlich weil es in '@ using (Html.BeginForm())' ist - entferne einfach das '@'. Aber der Code macht keinen Sinn, da er nie 'null' sein kann (die Methode gibt einen' MvcHtmlString' zurück) –

Antwort

1

Sie erhalten diesen Fehler, weil Sie den Rasor-Code der Teilansicht von Html.ValidationSummary() in Ihre if-Anweisung rendern. Der Compiler sieht dann alle @ -Symbole, die validationSummary rendert und ausfällt.

Ein einfacher Test, um zu sehen, ob es Validierungsfehler sind, ist @if(!ViewData.ModelState.IsValid)

@if(!ViewData.ModelState.IsValid) 
    { 
    <div class="registration-val-summary"> 
     <label class="registration-val-label"> 
     Please correct the following issues with your registration: 
     </label> 
     @Html.ValidationSummary() 
    </div> 
    } 
+0

Ty für die Antwort. Ich kopierte und fügte diesen Code genau wie du es hast und ich bekomme die gleiche Nachricht "Unerwartet" i f "Stichwort nach" @ "Zeichen." – ErocM

+1

wenn ich das @ es entfernt hat funktioniert! – ErocM

+0

Die '@ Html.ValidationSummary()' sollte außerhalb des 'if' Blocks liegen, ansonsten wird sie anfangs nie gerendert und kann nicht für die clientseitige Validierung verwendet werden –

0

Html.ValidationSummary() wird IF und NUR angezeigt, wenn Validierungsfehler auf der Seite vorhanden sind.

Was Sie versuchen, bereits durch die Html.ValidationSummary() Helfer erzielen zu tun ist, und es ein HTML-div-Element zurückgibt, das eine ungeordnete Liste aller Validierungsfehlermeldungen aus dem Modell-State-Wörterbuch enthält [Source]

Html.ValidationSummary() macht eine Teilansicht, aber Sie können über diesen answer

In Ihrem Fall möchten Sie vielleicht den folgenden Code in der benutzerdefinierten Ansicht die Ansicht anpassen/erweitern, dass Sie

<div class="registration-val-summary"> 
    <label class="registration-val-label"> 
    Please correct the following issues with your registration: 
    </label> 
</div> 
schaffen
+0

@MikirKale Ty für die Antwort.Ich habe ursprünglich diesen Code dort, aber die "Bitte korrigieren Sie ..." zeigt auf, ob es eine Nachricht gibt oder nicht. – ErocM

Verwandte Themen