Die CustomValidator ServerValidate-Methode wird nicht ausgelöst

8

Ich habe ein CustomValidator auf mein Formular gesetzt. Ich habe seine Eigenschaft ControlToValidate nicht festgelegt. In seinem ServerValidate -Ereignis habe ich Folgendes geschrieben:

%Vor%

Ich gebe dieser Methode einen Haltepunkt, aber es scheint nie zu diesem Punkt zu kommen. Aber wenn ich das auf einer anderen Form mache, funktioniert es wie ein Zauber.

  1. Die Eigenschaft ValidationGroup der Schaltfläche und die CustomValidator sind identisch
  2. Ich habe versucht, diese Eigenschaft sowohl in der Schaltfläche und der CustomValidator zu löschen, funktioniert immer noch nicht.

Es scheint so, als ob etwas ganz allgemein ist. Ich habe einfach ein CustomValidator auf das Formular gesetzt und keine seiner Eigenschaften berührt, außer dass ich nur seine ServerValidate -Ereignismethode gesetzt habe.

EDIT: Hier ist der aspx Teil:

%Vor%     
Mikayil Abdullayev 16.04.2012, 10:27
quelle

2 Antworten

19

Versuchen Sie, die Validierung in dem Button-Klick-Handler über Page.Validate : %Vor%

Bearbeiten (aus Kommentaren):

Wenn Sie möchten, dass der customvalidator prüft, ob in Ihren Steuerelementen nichts eingegeben / ausgewählt wurde, müssen Sie ValidateEmptyText bis true. Vielleicht möchten Sie auch, dass CustomValidator das RequiredFieldValidators ersetzt.

Ich nehme an, dass die Validator-Reihenfolge auf dem aspx entscheidet, ob der severvalidate eines Custom Validators aufgerufen wird, wenn ein vorheriger Validator bereits Page.IsValid=false erstellt hat. Oder ASP.NET ist so schlau, dass es annimmt, dass SeverValidate teurer ist als eine einfache Text-leer-Prüfung.

    
Tim Schmelter 16.04.2012, 10:43
quelle
0

Ich möchte auch etwas mehr Hilfe für diejenigen, die CustomValidators und RequiredFieldValidators zur gleichen Zeit verwenden. Man sollte berücksichtigen, dass die Validierung der Client-Seite zuerst stattfindet. Und die serverseitige Validierung findet erst nach PostBack statt. Ich bin mir sicher, dass Sie es verstanden haben, nur für den Fall, dass dies nicht ganz klar ist: Es bedeutet zuerst, dass alle Steuerelemente, die an bestimmte clientseitige Arbeitsvalidatoren gebunden sind, gültig sein müssen, damit Postback auftreten kann. Nach der Seite. IsValid ist True serverseitige Sachen und gibt alle Änderungen zurück, die serverseitige Validierungsnachrichten enthalten.

Hier sind die Möglichkeiten, wie man sowohl CustomVCalidators als auch andere eingebaute Validatoren gleichzeitig arbeiten lassen kann:

  1. Setzen Sie beide Gruppen von Validatoren auf Client-Seite. In diesem Fall müssen wir sicherstellen, dass wir für das / die benutzerdefinierte (n) Valitor (s) das Skript, das die Validierung auf der Clientseite durchführt, spacifizieren werden. Ohne Skript zu schreiben und nur die ServerValidate-Methode auszufüllen, wird die Validierung auf dem Server stattfinden. Selbst wenn die EnableClientScript-Eigenschaft auf True gesetzt ist.

  2. Legen Sie fest, dass beide Gruppen von Validatoren serverseitig arbeiten. Setzen Sie EnableClientScript einfach auf False. Beachten Sie jedoch, dass dadurch der Server geladen wird.

Mikayil Abdullayev 16.04.2012 13:09
quelle

Tags und Links