如何使reCAPTCHA与ASP.Net中的ValidationGroup一起使用(验证码)

Jas*_*ris 10 asp.net captcha recaptcha

我正在使用reCAPTCHA提供的ASP.Net插件和控件.如果Web表单上的提交按钮不在验证组中,我可以成功地使控件生效.reCAPTCHA控件没有验证组属性.

当网络表单上有验证组时,是否有人使用此解决方案或任何解决方案来使reCAPTCHA控件正常工作?

Jam*_*Law 7

以为我只是通过一些工作代码扩展其他几个人的评论......

<recaptcha:RecaptchaControl ID="RecaptchaControl" runat="server" />

<asp:CustomValidator ID="RecaptchaValidator" runat="server" OnServerValidate="RecaptchaValidator_ServerValidate" ErrorMessage="Recaptcha input invalid." ValidationGroup="SomeValidationGroup" />
Run Code Online (Sandbox Code Playgroud)

和代码背后......

protected void RecaptchaValidator_ServerValidate(object sender, ServerValidateEventArgs e)
{
    this.RecaptchaControl.Validate();
    e.IsValid = this.RecaptchaControl.IsValid;
}
Run Code Online (Sandbox Code Playgroud)

谁能想到更简单的方法呢?感谢Vidalik关于使用OnServerValidate的想法.


Vit*_*lik 5

您可以添加CustomValidator,实现将验证ReCAPTCHA数据的OnServerValidate.可以将CustomValidator分配给任何ValidatorGroup.


bzl*_*zlm 4

reCAPTCHA ASP.NET 插件被编写为向后兼容 ASP.NET 1.1,这意味着ValidationGroup不支持该概念(ASP.NET 2.0 中的新概念)。但该插件附带了可下载的源代码,因此您可以自行修改以支持ValidationGroup

在 ASP.NET 2.0 中,验证器应该继承BaseValidator并实现IValidator,这意味着您应该将 RecaptchaControl 类型更改为继承BaseValidator而不是WebControl。然后,您将必须稍微修改代码以实现 中定义的所有方法和属性BaseValidator。然后您可以在页面上使用这个新控件,它现在支持ValidationGroup.