Frage

Ich benutze das ASP.NET -Plugin und die Steuerung durch reCaptcha. Ich kann die Steuerung erfolgreich zum Laufen bringen, wenn sich die Schaltfläche "Senden im Webformular nicht in einer Validierungsgruppe" befindet. Es gibt kein Validierungsgruppenattribut für die Recaptcha -Steuerung.

Hat jemand mit dieser oder Lösungen Erfolg gehabt, damit die Recaptcha -Kontrolle funktioniert, wenn eine Validierungsgruppe im Webform vorhanden ist?

War es hilfreich?

Lösung

Das Recaptcha ASP.NET-Plug-In ist so geschrieben, dass sie mit ASP.NET 1.1 rückwärtskompatibel ist, was bedeutet, dass das bedeutet ValidationGroup Das Konzept (das in ASP.NET 2.0 neu ist) wird nicht unterstützt. Aber das Plug-In kommt mit herunterladbarer Quellcode, Sie können es selbst ändern, um es zu unterstützen ValidationGroup.

In ASP.NET 2.0, Validatoren sollten von erben BaseValidator und implementieren IValidator, Das heißt, Sie sollten den Recaptchacontrol -Typ ändern, um von BaseValidator Anstatt von WebControl. Sie müssen den Code dann ein bisschen ändern, um alle in definierten Methoden und Eigenschaften zu implementieren BaseValidator. Dann können Sie diese neue Steuerung stattdessen auf Ihrer Seite verwenden, die jetzt unterstützt ValidationGroup.

Andere Tipps

Ich dachte, ich würde nur die Kommentare von einigen anderen mit einem Arbeitscode erweitern ...

<recaptcha:RecaptchaControl ID="RecaptchaControl" runat="server" />

<asp:CustomValidator ID="RecaptchaValidator" runat="server" OnServerValidate="RecaptchaValidator_ServerValidate" ErrorMessage="Recaptcha input invalid." ValidationGroup="SomeValidationGroup" />

Und Code hinter ...

protected void RecaptchaValidator_ServerValidate(object sender, ServerValidateEventArgs e)
{
    this.RecaptchaControl.Validate();
    e.IsValid = this.RecaptchaControl.IsValid;
}

Kann sich jemand eine einfachere Art und Weise vorstellen, dies zu tun? Ein großes Lob an Vidalik für die Gedanken über die Verwendung von Onservervalidat.

Sie können CustomValidator hinzufügen und Onservervalidat implementieren, um die Recaptcha -Daten zu validieren. CustomValidator kann jeder ValidatorGroup zugewiesen werden.

Das hat für mich funktioniert ...

  1. Fügen Sie einen benutzerdefinierten Validator mit der richtigen Validierungsgruppe hinzu.

  2. Es ist servervalidat -Methodenaufruf ..

    recaptcha.Validate();
    
  3. Überprüfen Sie dann wie folgt vor Ihrer Hauptverarbeitung ...

    if (page.isvalid && recaptcha.isvalid) {respose.write ("gültig"); }

HTH.

RemotecukVorschläge funktionierten für mich, ohne den benutzerdefinierten Validator hinzuzufügen.

protected void button_onclick(object sender, EventArgs e){
    recaptcha.Validate();
    if(!Page.IsValid && recaptcha.IsValid){
        lblError.Text = "Please check your captcha entry";
    } else {
        //do your thing
    }
}

Um die erforderliche validierende clientseitige zu durchführen, und ohne den Recaptcha-Quellcode zu ändern, habe ich meinem Formular einen CustomValidator hinzugefügt und eine JavaScript-Funktion erstellt, um das Feld Eingabetext zu validieren.

<asp:CustomValidator ID="reqRecaptcha" runat="server" ClientValidationFunction="validateRecaptcha" Text="Required"></asp:CustomValidator>

Um das herauszufinden ID des generierten Eingabefeldes habe ich mir den Quellcode der Seite angesehen und festgestellt, dass das Eingabefeld immer warrecaptcha_response_field. (Bitte korrigieren Sie mich, wenn ich falsch liege) Ich weiß, dass ich das JavaScript erstellen konnte (mit JQuery und einer benutzerdefinierten Funktion, um die Gültigkeit eines Steuerelements zu überprüfen).

    function validateRecaptcha(sender, args) {
        args.IsValid = isFieldValid("input[id$='recaptcha_response_field']");
    }

HINWEIS: Wenn die Entwickler die Ausgabe der Recaptcha -Steuerung ändern, sind Sie sich möglicherweise nicht der Änderung bewusst, was dazu führt, dass der Validator die Arbeit beschlagnahmt.

Siehe Recaptchaimage und Recaptchavalidator -Steuerelemente als Teil des Altairis Web UI Toolkit: http://altairiswebui.codeplex.com/

Es ist Open-Source-Set von Webkomponenten, die ziemlich anständige und ASP.NET-Standards enthält (wenn ich sagen darf, dass es der Autor ist :-) Implementierung von Recaptcha für Webformulare.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top