2015-03-20 1 views
0

Google рекапчи 2 ("noCAPTCHA") не получает повторно при использовании UpdatePanelGoogle рекапчи 2 ("noCAPTCHA") не получает повторно при использовании ASP.NET Web-Form UpdatePanel

Я не использую старый ASP .Net reCAPTCHA.

Вот код, который я запускаю.

<asp:ScriptManager ID="ScriptManager1" runat="server" /> 
    <asp:UpdatePanel ID="googleCaptchaUpdatePanel" runat="server" UpdateMode="Always" > 
     <ContentTemplate> 
     <div class="googleCaptchaWrapper"> 
      <div class="g-recaptcha" data-sitekey="<%= getCaptchaPublicKey() %>"></div> 
      <asp:Label id="captchaError" CssClass="captchaError" runat="server" ForeColor="Red" Visible="false" /> 
     </div> 
     <div class="smallContentRow" style="margin-top: 10px; margin-left: auto; margin-right: auto; width: 100%; text-align: center;"> 
      <asp:LinkButton ID="btnSubmit" runat="server" CssClass="myBtn" CausesValidation="False" Text="Submit" TabIndex="9" ToolTip="Click to Submit Info"/> 
      <asp:LinkButton ID="btnCancel" runat="server" CausesValidation="False" CssClass="myBtn" Text="Cancel" TabIndex="10" ToolTip="Click to Cancel Info "/> 
     </div> 
    </ContentTemplate> 
</asp:UpdatePanel> 

Когда я нажимаю кнопку «Отправить», Captcha не возвращается к экрану.

Я попытался решить проблему с помощью различных выпусков javascript, которые были опубликованы, но все они выглядят только для более старой версии reCAPTCHA Google.

ответ

1

Я понял, как.

я в конечном итоге явно делает новый ReCaptcha или ReCaptcha 2.

В моем сайте Masterpage, я объявил ReCaptcha скрипты расслоение плотной:

<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer ></script> 

В моей странице, я создал заполнитель для капча так:

<div class="myCaptchaWrapper"> 
    <div id="myCaptcha" class="g-recaptcha"></div> 
    <asp:Label ID="errorMessage" CssClass="styledErrors" runat="server" ForeColor="Red" Visible="false" /> 
</div> 

Тогда в моих Captcha ЯШ:

function loadCaptcha() { 
    grecaptcha.render('myCaptcha', { 
     'sitekey': mySiteKey, 
     'theme': 'clear', 
     'callback': myClientResponseCallback 
    }); 
} 

И затем я вызываю защищенный веб-сервис в myClientResponseCallback для выполнения обработки на стороне сервера , на которой мне нужно.

Выполнение этого действия, я могу обработать действие, когда пользователь нажимает «Применить» в reCaptcha, и я также могу обработать проверку, был ли успешный ответ captcha на серверной обработке в asp.net Post -Назад.