reCaptcha 在UpdatePanel 和 ModalPopup中的使用

本文介绍如何在ASP.NET应用中集成reCaptcha进行用户输入验证,包括安装reCaptcha库、配置密钥及实现动态刷新验证码等功能。

当前支持asp.net最新版本的reCaptcha是1.0.4.0 可以在这里下载.随后在这里申请reCaptha key.

下载后,引用Recaptcha.dll. 然后将如下代码添加到aspx或ascx中:

 

<%@ Register TagPrefix="recaptcha" Namespace="Recaptcha" Assembly="Recaptcha" %>

UpdatePanel:

aspx code:


 
<asp:UpdatePanel ID="upComment" runat="server" UpdateMode="conditional">
      <ContentTemplate>
               <asp:TextBox TextMode="MultiLine" runat="server" ID="txtComment" Height="100px" Width="450px" /><br />
              <asp:RequiredFieldValidator ID="rvComment" runat="server" ControlToValidate="txtComment"  ErrorMessage="Comment field is required!" />
   </ContentTemplate>
</asp:UpdatePanel>
<recaptcha:RecaptchaControl ID="recaptcha" Theme="clear" runat="server" PublicKey="your publicKey" PrivateKey="your privateKey" />
<asp:UpdatePanel ID="upButton" runat="server" UpdateMode="Conditional">
         <ContentTemplate>
              <asp:Label ID="lbtRecaptchError" runat="server" ForeColor="Red" />
                <div>
                      <asp:Button ID="btnOk" runat="server" Text="  Ok  " OnClick="btnSaveComment_Click" Visible="true" CausesValidation="true" />
                                           &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                    <asp:Button ID="btnCancel" runat="server" Text="Cancel" OnClick="btnCancel_Click"   CausesValidation="false" Visible="true" />
                </div>
          </ContentTemplate>
</asp:UpdatePanel> 

CS Code:


 
 protected void btnSaveComment_Click(object sender, EventArgs e) {
if (recaptcha.IsValid) {
//验证通过后在这里可以获得txtComment.Text值.
//..............

//然后清空 txtComment.Text = string.Empty;
lbtRecaptchError.Text
= string.Empty;
upComment.Update();
}
else {
//验证失败可以获得reCaptcha返回的信息 lbtRecaptchError.Text = recaptcha.ErrorMessage;
//这里将更新reCaptcha的验证码. ScriptManager.RegisterClientScriptBlock(Page,Page.GetType(), "whatever1","Recaptcha.reload();", true);
upButton.Update();
}

}

protected void btnCancel_Click(object sender, EventArgs e) {
lbtRecaptchError.Text
= string.Empty;
txtComment.Text
= string.Empty;
upButton.Update();
upComment.Update();
}

ModalPopup

aspx Code:

 

<asp:UpdatePanel ID="upMain" runat="server" UpdateMode="Conditional">
  <ContentTemplate>
      <asp:LinkButton ID="lbtLeaveComment"  runat="server" Text="Leave your comment" OnClientClick="return Recaptcha.reload();" />
          <div id="divComment" runat="server" style="background-color: #ffffff; border-width: 3px; border-style: solid; border-color: Gray; padding: 3px; width: 590px;">
              <table>
                  <tr>
                      <td align="right" style="font-weight: bold" valign="top">
                          Add Comment:
                      </td>
                      <td align="left">
                          <asp:UpdatePanel ID="upInner" runat="server" UpdateMode="conditional">
                              <ContentTemplate>
                                  <asp:TextBox TextMode="MultiLine" runat="server" ID="txtComment" Height="100px" Width="450px" /><br /><asp:RequiredFieldValidator ID="rvComment" runat="server" ControlToValidate="txtComment"  ErrorMessage="Comment field is required!" />
                              </ContentTemplate>
                          </asp:UpdatePanel>
                      </td>
                  </tr>
                  <tr>
                      <td colspan="2" align="center">
                          <recaptcha:RecaptchaControl ID="recaptcha" Theme="clear" runat="server" PublicKey="your publicKey" PrivateKey="your privateKey" />
                          <asp:UpdatePanel ID="upButton" runat="server" UpdateMode="Conditional">
                              <ContentTemplate>
                                  <asp:Label ID="lbtRecaptchError" runat="server" ForeColor="Red" />
                                  <asp:Button ID="btnOk" runat="server" Text="  Ok  " OnClick="btnSaveComment_Click" Visible="true" CausesValidation="true" />
                                  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
                                  <asp:Button ID="btnCancel" runat="server" Text="Cancel" OnClick="btnCancel_Click" CausesValidation="false" Visible="true" />
                              </ContentTemplate>
                          </asp:UpdatePanel>
                      </td>
                  </tr>
              </table>
          </div>
    <asp:ModalPopupExtender ID="ModalPopupExtender1" runat="server" BackgroundCssClass="modalBackground"
        PopupControlID="divInner" DropShadow="false" TargetControlID="lbtLeaveComment">
    </asp:ModalPopupExtender>
  </ContentTemplate>
</asp:UpdatePanel>

 

其中 OnClientClick="return Recaptcha.reload();" 是关键.

CS Code:

   protected void btnSaveComment_Click(object sender, EventArgs e) {
if (recaptcha.IsValid) {
//省略............. txtComment.Text = string.Empty;
lbtRecaptchError.Text
= string.Empty;
Hide();
}
else {
lbtRecaptchError.Text
= recaptcha.ErrorMessage;
ScriptManager.RegisterClientScriptBlock(Page,Page.GetType(),
"whatever1","Recaptcha.reload();", true);
upButton.Update();
}
}

protected void btnCancel_Click(object sender, EventArgs e) {
lbtRecaptchError.Text
= string.Empty;
txtComment.Text
= string.Empty;
upButton.Update();
Hide();
}

private void Hide() {
ModalPopupExtender1.Hide();
upComment.Update();
}
乐播投屏是一款简单好用、功能强大的专业投屏软件,支持手机投屏电视、手机投电脑、电脑投电视等多种投屏方式。 多端兼容与跨网投屏:支持手机、平板、电脑等多种设备之间的自由组合投屏,且无需连接 WiFi,通过跨屏技术打破网络限制,扫一扫即可投屏。 广泛的应用支持:支持 10000+APP 投屏,包括综合视频、网盘与浏览器、美韩剧、斗鱼、虎牙等直播平台,还能将央视、湖南卫视等各大卫视的直播内容一键投屏。 高清流畅投屏体验:腾讯独家智能音画调校技术,支持 4K 高清画质、240Hz 超高帧率,低延迟不卡顿,能为用户提供更高清、流畅的视觉享受。 会议办公功能强大:拥有全球唯一的 “超级投屏空间”,扫码即投,无需安装。支持多人共享投屏、远程协作批注,PPT、Excel、视频等文件都能流畅展示,还具备企业级安全加密,保障会议资料不泄露。 多人互动功能:支持多人投屏,邀请好友加入投屏互动,远程也可加入。同时具备一屏多显、语音互动功能,支持多人连麦,实时语音交流。 文件支持全面:支持 PPT、PDF、Word、Excel 等办公文件,以及视频、图片等多种类型文件的投屏,还支持网盘直投,无需下载转格式。 特色功能丰富:投屏时可同步录制投屏画面,部分版本还支持通过触控屏或电视端外接鼠标反控电脑,以及在投屏过程中用画笔实时标注等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值