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 に何かを入力するたびに、単語が正しい場合は「すべて良い」と表示され、そうでない場合は「入力した単語が正しくありません」と表示されることです。
しかし、問題は、 をクリックする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"
ます。If
ただし、Recaptcha が読み込まれると、条件外の行も実行されません。
私がそれを解決しようとしたこと:
- 削除された更新パネル: 同じ問題
- 実際のドメインでテスト済み: 同じ問題
- デバッグおよび例外のチェック: [出力] > [デバッグ] 画面に例外は表示されませんでした
この問題の他の解決策とその理由を教えてください。