2016-04-28 19 views
0

Ich benutze Google ReCaptcha V2 und es ist in einem Update-Panel. IF-Validierung fehlgeschlagen ReCaptcha verschwindet beim Postback. Ich lese ähnliche Themen, aber ich habe noch keine Antwort gefunden, die mein Problem löst.Recaptcha in Updatepanel verschwindet während PostBack

Bitte helfen!

Mein ASPX Code:

<%@ Register Assembly="GoogleReCaptcha" Namespace="GoogleReCaptcha" TagPrefix="cc1" %> 

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> 
<form id="formRegister" runat="server"> 
    <asp:ScriptManager ID="ScriptManagerRegister" EnablePartialRendering="true" runat="server"></asp:ScriptManager> 
    <asp:UpdatePanel ID="UpdatePanelRegister" hildrenAsTriggers="false" UpdateMode="Conditional" runat="server"> 
     <ContentTemplate> 

       <asp:Panel ID="Panel1" runat="server"></asp:Panel> 
       <asp:Button ID="ButtonRegister" runat="server" Text="Registrera" CssClass="btn btn-primary btn-md" /><br /> 
       <asp:Label ID="Label1" runat="server" Text=""></asp:Label> 

      </asp:Panel> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
</form> 
</asp:Content> 

Mein Code hinter C#

GoogleReCaptcha.GoogleReCaptcha ctrlGoogleReCaptcha = new GoogleReCaptcha.GoogleReCaptcha(); 

    protected override void CreateChildControls() 
    { 
     base.CreateChildControls(); 
     ctrlGoogleReCaptcha.PublicKey = "My Public Key"; 
     ctrlGoogleReCaptcha.PrivateKey = "My Private Key"; 
     this.Panel1.Controls.Add(ctrlGoogleReCaptcha); 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     ButtonRegister.Click += new EventHandler(ButtonRegister_Click); 
    } 

    protected void ButtonRegister_Click(object sender, EventArgs e) 
    { 
     if (ctrlGoogleReCaptcha.Validate()) 
     { 
      //submit form 
      Label1.Text = "Success"; 
     } 
     else 
     { 
      Label1.Text = "Captcha Failed!! Please try again!!"; 
     } 
    } 
+0

Es fine.Did Arbeit stellen Sie die richtige „Website Key "und" Secret Key "in CreateChildControls() -Methode? –

+0

Die Tasten funktionieren gut. Wenn ich ContentTemplate und UpdatePanel entferne, funktioniert es gut mit Postback. –

Antwort

0

Verwendung dieses Skript nach dem Körper

<body> 
<script language="javascript" type="text/javascript"> 
    function pageLoad() 
    { 

     $('.g-recaptcha').each(function (index, obj) { 
      grecaptcha.render(obj, { 'sitekey': 'yoursitekey' }); 
     }); 
    } 
</script>