我正在用VB.Net将noCAPTCHA reCAPTCHA实现到现有的表单中.它位于UpdatePanel中,并使用服务器端验证来验证用户是否已完成CAPTCHA(请参阅ASP.NET服务器端的验证回收2(无CAPTCHA reCAPTCHA))
如果用户未能通过CAPTCHA或任何其他经过验证的字段,则由于回发而无法重新加载CAPTCHA.如何解决这个问题,以便在回发后CAPTCHA不会消失?
我的CAPTCHA代码:
<div id="captcha" class="g-recaptcha" runat="server" data-sitekey="MySiteKey"></div>
Run Code Online (Sandbox Code Playgroud)
api.js放在Site.Master头中.
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
Run Code Online (Sandbox Code Playgroud)
扩大.
我尝试过一种解决方案但最终失败了.我补充道
<div id="captcha" class="g-recaptcha" runat="server" data-sitekey="MySiteKey"></div>
Run Code Online (Sandbox Code Playgroud)
到我的MasterPage的主体并将其扔在UpdatePanel中,给它一个id,等等.
<asp:UpdatePanel UpdateMode="Conditional" runat="server" ID="noCaptcha">
<ContentTemplate>
<asp:ScriptManager runat="server"></asp:ScriptManager>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
</ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
然后我在Site Master的代码隐藏中创建了一个函数,如下所示:
Public Sub TriggerCaptchaReload()
noCaptcha.Update()
End Sub
Run Code Online (Sandbox Code Playgroud)
当用户尝试验证并提交表单时
如果他们失败了,我试图让更新面板刷新
CType(Me.Page.Master, MasterPage).TriggerCaptchaReload()
Run Code Online (Sandbox Code Playgroud)
它位于后面的控制代码上.
这没用.也许有一个潜在的解决方案可以找到吗?