如果 reCaptcha 仍未完成,则停止或中断用户登录
stop or interrupt the user from logging in if reCaptcha is still unaccomplished
我试图从 c# 代码隐藏中禁用登录模板内的按钮,我已经尝试从前端的 javascript 方法执行此操作,但我无法让它工作。参见 here!
这是我正在做的事情:
Javascript方法:
<script type="text/javascript">
var resetCaptcha = function () {
alert("Confirmation Expired. Please Answer Recaptcha.");
PageMethods.disable();
grecaptcha.reset();
};
</script>
调用函数的地方:
<div class="g-recaptcha" data-sitekey="site-key" data-theme="dark"
data-expired-callback="resetCaptcha" data-callback="DisableButton"></div>
代码隐藏方法:
[WebMethod]
public void disable()
{
Button btn = new Button();
btn = LoginUser.FindControl("LoginButton") as Button;
btn.Enabled = false;
}
我也声明了:
<asp:ScriptManager ID="ScriptMgr" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
但是当验证码成功完成时,我仍然得到这个错误:
Microsoft JScript runtime error: 'PageMethods' is undefined
有人可以帮我吗?我错过了什么?
你想做的事永远不会奏效。您不能通过 PageMethod 访问页面中的控件;它在正常的 ASP.NET 生命周期之外运行。但是您可以使用 JavaScript 来禁用控件:
$get("<%= LoginButton %>").disabled = "disabled";
这只适用于客户端,不会持久存在于服务器上。注意 $get()
是 ASP.NET AJAX 获取控件的方法,document.getElementById
做同样的事情。
我能够做我想做的事,(在登录前测试 recaptcha 的有效性),使用 OnLoggingIn
事件而不是手动 enabling/disabling 登录按钮。
我实际上能够从代码隐藏控制前端 asp.net 标签的 属性。
使用这行代码:
(LoginUser.FindControl("RecaptchaRequired") as Label).Text = "Please answer reCaptcha";
其中 LoginUser
是 loginTemplate
的 ID,RecaptchaRequired
是模板内的标签。
刚才,我意识到我试图用错误的方法来完成某件事..
我试图从 c# 代码隐藏中禁用登录模板内的按钮,我已经尝试从前端的 javascript 方法执行此操作,但我无法让它工作。参见 here!
这是我正在做的事情:
Javascript方法:
<script type="text/javascript">
var resetCaptcha = function () {
alert("Confirmation Expired. Please Answer Recaptcha.");
PageMethods.disable();
grecaptcha.reset();
};
</script>
调用函数的地方:
<div class="g-recaptcha" data-sitekey="site-key" data-theme="dark"
data-expired-callback="resetCaptcha" data-callback="DisableButton"></div>
代码隐藏方法:
[WebMethod]
public void disable()
{
Button btn = new Button();
btn = LoginUser.FindControl("LoginButton") as Button;
btn.Enabled = false;
}
我也声明了:
<asp:ScriptManager ID="ScriptMgr" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
但是当验证码成功完成时,我仍然得到这个错误:
Microsoft JScript runtime error: 'PageMethods' is undefined
有人可以帮我吗?我错过了什么?
你想做的事永远不会奏效。您不能通过 PageMethod 访问页面中的控件;它在正常的 ASP.NET 生命周期之外运行。但是您可以使用 JavaScript 来禁用控件:
$get("<%= LoginButton %>").disabled = "disabled";
这只适用于客户端,不会持久存在于服务器上。注意 $get()
是 ASP.NET AJAX 获取控件的方法,document.getElementById
做同样的事情。
我能够做我想做的事,(在登录前测试 recaptcha 的有效性),使用 OnLoggingIn
事件而不是手动 enabling/disabling 登录按钮。
我实际上能够从代码隐藏控制前端 asp.net 标签的 属性。
使用这行代码:
(LoginUser.FindControl("RecaptchaRequired") as Label).Text = "Please answer reCaptcha";
其中 LoginUser
是 loginTemplate
的 ID,RecaptchaRequired
是模板内的标签。
刚才,我意识到我试图用错误的方法来完成某件事..