2016-04-28 48 views
0

我正在使用Google ReCaptcha V2,它位於updatepanel內。 IF驗證失敗ReCaptcha在回發中消失。 我讀過類似的主題,但我還沒有找到解決我的問題的答案。UpdatePanel中的Recaptcha在回傳期間消失

請幫忙!

我的ASPX代碼:

<%@ 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> 

我身後的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

它的工作fine.Did你把正確的「網站後, Key「和」Secret Key「在CreateChildControls()方法中? –

+0

鑰匙工作很好。如果我刪除ContentTemplate和UpdatePanel,它可以在Postback上正常工作。 –

回答

0

使用該腳本主體

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

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