Wie validiere ich gegen mehrere Validierungsgruppen?

8

Ich habe zwei Validierungsgruppen: Eltern und Kind

Ich habe eine Schaltfläche zum Hinzufügen, die nur die untergeordnete Validierungsgruppe validieren muss, was einfach ist. Die Schaltfläche "Speichern" muss sowohl für die Client- als auch für die Serverseite auf die übergeordnete und die untergeordnete Validierungsgruppe überprüft werden. Ich denke, ich weiß, wie man es serverseitig macht, indem ich die Page.Validate ("Gruppenname") -Methode für jede Gruppe aufruft, aber wie kann es clientseitig gemacht werden?

    
Jeremy 24.03.2010, 16:18
quelle

4 Antworten

13

Sie sollten dies erreichen, indem Sie eine JavaScript-Funktion erstellen, die PageClientValidate und dann die Schaltfläche diese Funktion aufrufen

%Vor%     
CAbbott 24.03.2010, 16:37
quelle
4

Das Problem mit der Antwort von CAbbott ist, dass Validierungsfehler, die in der "Eltern" -Gruppe auftreten, nach dem Aufruf nicht angezeigt werden, um die "Kind" -Gruppe zu validieren. Das kleinere Problem mit Olegs Antwort ist, dass die Validierung der "Kind" -Gruppe nicht stattfinden wird, bevor die "Eltern" -Gruppe bereit ist.

Alles, was wir wirklich tun müssen, um die clientseitige Validierung von mehr als einer Gruppe gleichzeitig zu ermöglichen, ist das Überschreiben der JavaScript IsValidationGroupMatch-Methode, die festlegt, ob ein Steuerelement in den zu validierenden aktuellen Satz aufgenommen werden soll / p>

Zum Beispiel:

%Vor%     
Remi Despres-Smyth 28.08.2013 12:04
quelle
1

Wenn Sie Page_ClientValidate (..) zweimal aufrufen, wird nur das letzte Validierungsergebnis angezeigt und es kann OK sein, während das erste nicht gültig ist. Daher sollte der zweite Aufruf nur erfolgen, wenn der erste Aufruf wahr ist

%Vor%     
Oleg 26.10.2012 09:17
quelle
1

Wie auch immer Sie es tun, es erfordert etwas Hacking, um ASP.Net's Annahme zu umgehen, dass Sie das nicht versuchen würden. Ich favorisiere einen wiederverwendbaren Ansatz, der explizit den Hacking betrifft.

%Vor%     
Peter Taylor 24.01.2013 10:25
quelle