Funktionieren standardmäßige asp.net-Validatoren mit Ajax und Update-Panel?


1

Ich habe Probleme mit Validatoren nicht feuern (keine erwarteten Fehlermeldungen angezeigt) bei der Verwendung von Page.Validate() von Code hinter. Die Validatoren werden in einem Ajax-Update-Panel platziert.

Es scheint, es gibt herunterladbare Ajax-Versionen der Validatoren. Ich bin mir nicht sicher, ob ich diese brauche oder ob VS 2008 SP1 sie schon hat. Wenn das Formular über eine Schaltfläche gesendet wird, funktionieren die Validatoren, aber nicht, wenn ich eine Page.Validate() -Aufforderung mache.

0

Haben Sie Update auf Ihrem Updatepanel aufgerufen?

  0

Ich verwende kein Update. Das Updatepanel wird nur für Postbacks verwendet. 23 sep. 082008-09-23 23:04:23


0

Sie wurden vor einer Weile in ein Update für .NET-Framework aufgenommen, also ja, Sie haben sie in VS2008 SP1. Ich habe ein Problem gefunden, bei dem die serverseitige Methode für CustomValidators zweimal ohne "bösen" Effekt ausgelöst wird, aber ansonsten funktionieren sie einwandfrei.

Wie für das spezifische Problem, das Sie haben, sind vielleicht die Validatoren nicht im Updatepanel, oder ein anderes Panel am Ende wird von jedem Steuerelement aktualisiert anstelle von dem, was Sie wollen? Oder sogar einige ValidationGroups sind irgendwo definiert und nur diese werden validiert? Es ist sehr schwer zu sagen, ohne Code zu sehen.

Aber sicherstellen, dass Ihre Validatoren angezeigt werden, ist einfach: MyUpdatePanel.Update() wird die Aktualisierung erzwingen.


1

Ja, Validierer funktionieren in einem UpdatePanel, aber Sie müssen mindestens SP1 von ASP.NET 2.0 verwenden. Wenn Sie SP1 verwenden, benötigen Sie nicht und sollten nicht die "Ajax-Version" der Validatoren verwenden.

Weitere Details zu diesem Thema finden Sie hier:

StackOverflow: ASP.NET Validators inside an UpdatePanel


1

Ich will nicht, ein Update erzwingen. In bestimmten Situationen möchte ich einige Formularelemente validieren, wenn ein Benutzer den Wert eines Formularelements ändert. Wenn ein Benutzer eine Änderung vornimmt, um eine Optionsschaltfläche oder eine Dropdown-Liste zu sagen, erfolgt ein automatisches Postback. Wenn das Postback auftritt, möchte ich, dass die Validierungssteuerelemente ausgelöst werden, als ob ich die Übermittlungsschaltfläche drücken würde.

Diese Steuerelemente, die ein Postback verursachen, sind 'causevalidation' aktiviert. Ein weiterer Test ist im Event-Handler des Controls, das das Postback verursacht hat, ich habe eine Page.Validate().

Die Frage ist, warum ein Button Postback die Validierung aber nicht ein anderes Steuerelement auslöst, das ein Postback verursacht?

  0

Nun, wenn Sie die Validierungsergebnisse auf der Clientseite sehen möchten, muss das Updatepanel, wo sich die Validatoren befinden, ** benötigt ** aktualisiert werden. Andernfalls werden die Fehlermeldungen nicht angezeigt. Was ist das Ergebnis von Page.IsValid() in den Steuerereignissen, die Sie verwenden? 23 sep. 082008-09-23 23:15:03

  0

Kannst du klarstellen, was du mit "update" meinst, wenn du sagst "Ich möchte kein Update erzwingen"? Wenn Sie ein Postback ausgeben, UpdatePanel oder nicht, erhalten Sie ein Seiten-Update, auch wenn es für den Benutzer nicht so aussieht. 23 sep. 082008-09-23 23:15:35

  0

Ich meinte, ich möchte nicht das Update() des Panels verwenden. Ich erwarte, dass das Postback die Validatoren auslöst. Die Validatoren befinden sich im Updatepanel. Alle Serversteuerelemente befinden sich im Aktualisierungsbereich. Das IsValid ist wahr, wenn es nicht sollte, denn wenn ich auf den Senden-Button klicke, sehe ich Nachrichten. 23 sep. 082008-09-23 23:44:46


1

Vielleicht können wir es von oben nehmen. Können Sie diese beantworten?

  • Verwenden Sie .NET 2.0 SP1 oder höher?
  • Sind Ihre Validierungssteuerelemente im UpdatePanel oder außerhalb?
  • Verwenden Sie Ihre Website mit deaktiviertem JavaScript (sehr unwahrscheinlich)?

Beachten Sie, dass Ihre Validatoren muss in einer aktualisierten Update sein für sie die Fehlermeldungen angezeigt werden soll. Wenn sie sich nicht in einem aktualisierten UpdatePanel befinden, können die Prüfer ihre Darstellung im Browser nicht ändern.


0

Ich endete mit einem einzelnen benutzerdefinierten Validator und meine eigenen Prüfungen im Code hinterher und setzen Sie die benutzerdefinierte Validierer Fehlermeldung. Auf diese Weise hatte ich mehr Flexibilität und es funktionierte. Mit Ajax fühlt es sich wie eine Client-seitige Validierung an.