Ich habe ein paar andere Beiträge über die Verwendung von Recaptcha mit ASP.net UpdatePanels gesehen, aber ich habe noch keine Antwort gefunden, die mein Problem löst.
Hier ist mein ASPX-Code:
%Vor%Das Recaptcha-Steuerelement befindet sich also in einem Benutzersteuerelement, das mehrere .Net-Validierungssteuerelemente (z. B. RequiredFieldValidator) verwendet. Ich muss die Recaptcha und die ASP.net-Steuerelemente validieren, bevor Sie den Prozess fortsetzen können.
Wenn eine der Validierungen fehlschlägt (Recaptcha oder .Net), verschwindet das Recaptcha-Steuerelement. Wenn ich die HTML-Quelle ansehe, wird das Steuerelement nach dem Postback überhaupt nicht geladen, obwohl ich das UpdatePanel zur Aktualisierung auffordere.
Ich kann die Seite nicht vollständig neu laden, da dies alles als ein Overlay oben auf der Seite erscheint und es gibt andere Formularfelder auf der Seite dahinter.
Bitte helfen Sie!
Bearbeiten:
Von C #, wenn das Recaptcha fehlschlägt, rufe ich diesen Code auf:
%Vor%Beide Warnmeldungen werden ausgelöst, aber der Recaptcha wird immer noch nicht geladen.
Vergessen Sie den ScriptManager. Alles, was Sie brauchen, ist dieses Skript auf der Seite. Ändern Sie entsprechend für Ihre Identifikatoren:
%Vor%
Die akzeptierte Lösung hat bei mir nicht funktioniert. Hier ist die Antwort, die ich versucht habe und arbeite:
ASP.Net, verschwinden Recaptcha, UpdatePanels und Partial PostBacks: Ein für allemal behoben
Im Grunde geht es darum, ein verstecktes div zu erstellen und jquery zu verwenden, um das html neu zu rendern. Auch der Blogpost gibt eine nette kleine Aufschlüsselung der typischen Lösungen (z. B. mit RegisterClientScriptBlock mit einem einfachen Neuladen) und warum sie fehlschlagen.
%Vor%Code dahinter:
%Vor%Wenn Sie Recaptcha 2.0 verwenden, ist dies Ihr Javascript
%Vor%
Dies ist dein Recaptcha Div
%Vor%Rufen Sie dann am Ende des Postback-Ereignisses das Javascript auf
%Vor%Überraschenderweise musste ich den RegisterClientScriptBlock-Aufruf nicht anwenden, damit er funktioniert. Ich benutze einfach:
UpdateMode="Immer"
für das Updatepanel und auf der Serverseite rufe ich:
%Vor%Dies verhindert auch, dass das Captcha eine neue Herausforderung anzeigt.
Meine Antwort ist im Grunde die gleiche wie "Benutzer" ( das funktioniert !), aber jedem zu helfen, der VB benutzt. Ich hätte dort kommentiert, aber ich habe Zippo rep ... (Ich hoffe, dies ist nicht zu sehr ein Verstoß, und dass es jemandem hilft)
Ich portierte das Fleisch von diesem zu VB.NET:
%Vor%Ich konnte es mit der Version 2.1.0.0 der reCAPTCHA-Bibliothek für .NET mit Webforms, Skript-Manager und in einem Update-Panel arbeiten lassen.
Zuerst lade ich in der ASPX-Seite außerhalb des Update-Fensters die Google reCAPTCHA-Bibliothek:
%Vor%Zweitens habe ich auf der ASPX-Seite im Update-Panel ein div hinzugefügt, das als Ziel-Panel zum Laden des reCAPTCHA dient:
%Vor%Drittens habe ich im Code, der am Ende meines Postback-Ereignisses steht, ein Startscript registriert, um den reCAPTCHA in meinem Ziel-Panel zu rendern
%Vor%Tags und Links asp.net updatepanel recaptcha