0

Ich bin in einer Situation, in der ich Bit verdrahteten bedingten Validierung Server Seite und Client-Seite erreichen muss. wie folgt die GeschichteASP.Net MVC: Bit verschiedene Art von bedingten Validierung Server Seite und Client-Seite

a) Angenommen, ich habe ein Drop-Down-

b) zwei Kontrollkästchen,

c) ein Optionsfeld Liste

d) eine Checkbox-Liste

e) wenige Textfeld und

f) Speichern Schaltfläche

1) Meine Anforderung ist, wenn der Benutzer eine der Daten aus dem Dropdown-Menü auswählt und das Formular abschickt, dann wird die Validierungsnachricht für alle Kontrollen mit Ausnahme von zwei Kontrollkästchen angezeigt.

2) Wenn der Benutzer eine Daten aus der Dropdown-Liste auswählt und eines der Kontrollkästchen aus 2 auswählt und das Formular absendet, wird die Validierungsnachricht für alle Kontrollen mit Ausnahme der Checkbox-Liste angezeigt.

Ich weiß, die Anforderung ist Bit verdrahtet, aber ich muss ähnliche Dinge tun. also bitte geben Sie mir einen Vorschlag, wie Sie es in MVC mit benutzerdefinierten Validierung lösen.

wie Sie ValidationAttribute and IClientValidatable interface verwenden, um diese Validierung auf Client- und Server-Seite zu erreichen.

dank

+0

[Der vollständige Leitfaden zur Validierung in ASP.NET MVC 3 - Teil 2] (http://www.devtrends.co.uk/blog/the-complete-guide-to-validation-in-asp.net- mvc-3-part-2) –

+0

Ich denke, Sie nähern es falsch, obwohl es wie Validierung aussehen könnte, ist es nicht .... Nachdem der Benutzer wählt aus dem ersten Drop-down nur das erste Dropdown kann validiert werden. Sie können etwas nicht bestätigen, was noch nicht geschehen ist. – stink

+0

Wenn Daten aus der Dropdown-Liste ausgewählt wurden, wird die Validierung für das Dropdown nicht ausgelöst. danke – Mou

Antwort

1

Unter der Annahme, dass Sie Unauffällig Validierung verwenden, kann ein anderer Ansatz verwendet werden. Die Validierung für bestimmte Felder kann auf dem Client/Server aktiviert und deaktiviert werden.

Für Server-Seite in der ActionMethod Sie so etwas wie dies tun können,

' Check if any of the two CheckBoxes are not checked, then 
    ModelState.Remove("CheckBox1") 
    ModelState.Remove("CheckBox2") 

' Else 
    ModelState.Remove("CheckBoxList") 

zur Deaktivierung der Client-Seite Unauffällig Validation (freundlicherweise https://stackoverflow.com/a/12179373/1361888 beziehen),

$(function() { 
    var settngs = $.data($('form')[0], 'validator').settings; 
    settngs.ignore = ".ignore"; 
}); 

So können Sie im Grunde aktivieren oder Deaktivieren Sie die Validierung für Felder auf Client- und Serverseite. Dies ist der einfache Ansatz.

+0

was ist die Bedeutung dieser Zeile 'ModelState.Remove (" CheckBox1 ")?' – Mou

+0

was bedeutet js code Ihr zur Verfügung gestellt ........ was wird es tun? – Mou

+0

ModelState.Remove ("CheckBox1") entfernt die Überprüfung von der Serverseite für jedes von Ihnen angegebene Feld. Jeder Fehler wird im ModelState-Wörterbuch hinzugefügt, sodass Sie nur die serverseitige Validierung für ein beliebiges Feld entfernen. Der JS-Code, den ich zur Verfügung gestellt habe, wird verwendet, um die clientseitige Validierung für jedes gewünschte Feld zu ignorieren. –