我正在使用 Recaptcha 来阻止在我的网站上发送垃圾邮件。这是 Recaptcha 的代码
<asp:Panel ID="Panel1" runat="server" style="padding:5px" BackColor="White"
BorderColor="#999999" BorderStyle="Solid">
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<br />
<recaptcha:RecaptchaControl ID="recaptcha" runat="server"
PrivateKey="XXXX-HIDDEN-XXXX"
PublicKey="XXXX-HIDDEN-XXXX" Theme="Red" />
<br />
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Submit" />
<asp:Button ID="Button3" runat="server" Text="Cancel" />
<asp:Label ID="lblResult" runat="server" Font-Size="Medium" ForeColor="Red"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Panel>
<asp:ModalPopupExtender ID="UpdatePanel1_ModalPopupExtender" runat="server"
Enabled="True" PopupControlID="Panel1" TargetControlID="Button2" BackgroundCssClass="modalBackground" CancelControlID="Button3">
</asp:ModalPopupExtender>
代码Button1_Click
:
protected void Button1_Click(object sender, EventArgs e)
{
Page.Validate();
if (Page.IsValid)
{
lblResult.Text = "All Good";
}
else
{
lblResult.Text = "The words you entered are incorrect";
}
}
这段代码的目的是,每当用户在 Recaptcha 中输入内容时,如果单词正确,则会显示“All Good”,如果不正确,则会显示“The words you enter are wrong”。
但问题是当我点击时Button1
,它的Click
事件没有被执行。但是当没有加载recaptcha(即没有连接互联网时)时,Button1_Click()
只执行和执行条件之外的代码if(Page.isValid)
。例如,如果我像这样修改点击事件:
protected void Button1_Click(object sender, EventArgs e)
{
lblResult.Text="Not in if condition";
Page.Validate();
if (Page.IsValid)
{
lblResult.Text = "All Good";
}
else
{
lblResult.Text = "The words you entered are incorrect";
}
}
然后它成功地将 设置lblResult.Text
为"Not in if condition"
。但是当加载 Recaptcha 时,它甚至不会执行那些超出If
条件的行。
我试图解决的问题:
- 删除更新面板:同样的问题
- 在实际域上测试:同样的问题
- 已调试并检查任何异常:输出>调试屏幕上未显示异常
请告诉我此问题的任何其他解决方案及其发生的原因。