asp.net – 在PostBack期间Recaptcha消失

前端之家收集整理的这篇文章主要介绍了asp.net – 在PostBack期间Recaptcha消失前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在这里看到了几个关于使用Recaptcha和ASP.net UpdatePanels的其他帖子,但还没有找到解决我的问题的答案.

这是我的ASPX代码

<asp:UpdatePanel ID="updRecaptcha" runat="server" UpdateMode="Always">
 <ContentTemplate>
  <recaptcha:RecaptchaControl ID="btnrecaptcha" runat="server" Theme="clean" PrivateKey"<%$Resources: General,CaptchaPrivateKey %>" PublicKey="<%$Resources: General,CaptchaPublicKey %>" />        
  <asp:Label ID="recaptchaerror" runat="server" style="color: Red;"/>
 </ContentTemplate>
</asp:UpdatePanel>

因此,Recaptcha控件存在于使用多个.Net验证控件(例如requiredFieldValidator)的用户控件中.在允许进程继续之前,我需要对Recaptcha和ASP.net控件进行验证.

如果任何验证失败(Recaptcha或.Net),则Recaptcha控件将消失.看一下HTML源代码,在回发之后根本没有加载控件 – 尽管我告诉UpdatePanel要更新.

我无法完全重新加载页面,因为这一切都显示页面顶部的叠加层,页面后面还有其他表单字段.

请帮忙!

编辑:

当Recaptcha失败时从C#我调用这段代码

ScriptManager.RegisterClientScriptBlock(Page,Page.GetType(),"InvalidRecaptcha","alert('Recaptcha Failed');Recaptcha.reload();alert('Recaptcha Reloaded');",true);

两个警报语句都会触发,但Recaptcha仍然无法加载.

解决方法

忘记ScriptManager.您只需要在页面中使用此脚本.相应地更改您的标识符:
<script type="text/javascript">
// RECAPTURE CODE FOR RELOADING AFTER INCORRECT ENTRY
if (typeof Sys != 'undefined') {
    var requestManager = Sys.WebForms.PageRequestManager.getInstance();
    requestManager.add_endRequest(function(sender,args) {

        $('<div id="recaptcha_widget_div"/>').appendTo('#recaptcha_widget_div2');

        if (typeof Recaptcha != 'undefined') {                                
            Recaptcha.create(recaptcha_key,"recaptcha_widget_div",{
                theme: "red",callback: Recaptcha.focus_response_field
            });
        }
    });
}
原文链接:https://www.f2er.com/aspnet/248753.html

猜你在找的asp.Net相关文章