10

reCAPTCHAが提供する ASP.Net プラグインとコントロールを使用しています。Web フォームの送信ボタンが検証グループにない場合、コントロールを正常に動作させることができます。reCAPTCHA コントロールの validationgroup 属性はありません。

Webフォームに検証グループがあるときにreCAPTCHAコントロールを機能させるために、これまたは何らかの解決策で成功した人はいますか?

4

7 に答える 7

7

いくつかの作業コードを使用して、他の数人のコメントを拡張したいと思いました...

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

<asp:CustomValidator ID="RecaptchaValidator" runat="server" OnServerValidate="RecaptchaValidator_ServerValidate" ErrorMessage="Recaptcha input invalid." ValidationGroup="SomeValidationGroup" />

そしてコードビハインド...

protected void RecaptchaValidator_ServerValidate(object sender, ServerValidateEventArgs e)
{
    this.RecaptchaControl.Validate();
    e.IsValid = this.RecaptchaControl.IsValid;
}

誰かがそれを行うより簡単な方法を考えることができますか? OnServerValidate の使用に関する考えについて Vidalik に感謝します。

于 2012-09-05T14:06:44.703 に答える
5

CustomValidatorを追加し、ReCAPTCHAデータを検証するOnServerValidateを実装できます。CustomValidatorは、任意のValidatorGroupに割り当てることができます。

于 2009-03-18T03:36:27.487 に答える
4

reCAPTCHA ASP.NET プラグインは、ASP.NET 1.1 と下位互換性を持つように作成されています。つまり、このValidationGroup概念 (ASP.NET 2.0 の新機能) はサポートされていません。ただし、プラグインにはダウンロード可能なソース コードが付属しているため、サポートするように自分で変更できますValidationGroup

ASP.NET 2.0 では、バリデータは を継承しBaseValidatorて実装IValidatorする必要がありBaseValidatorますWebControl。で定義されているすべてのメソッドとプロパティを実装するには、コードを少し変更する必要がありますBaseValidator。次に、代わりにこの新しいコントロールをページで使用できます。これは現在サポートされていますValidationGroup

于 2008-12-09T11:26:43.763 に答える
2

これは私のために働いた...

  1. 正しい検証グループを持つカスタム バリデーターを追加します。

  2. その ServerValidate メソッド呼び出し..

    recaptcha.Validate();
    
  3. 次に、メイン処理の前に次のように確認します...

    if (Page.IsValid && recaptcha.IsValid) { respose.write("valid"); }

HTH。

于 2010-12-07T18:32:55.440 に答える
1

RemotecUkの提案は、カスタムバリデーターを追加しなくてもうまくいきました。

protected void button_onclick(object sender, EventArgs e){
    recaptcha.Validate();
    if(!Page.IsValid && recaptcha.IsValid){
        lblError.Text = "Please check your captcha entry";
    } else {
        //do your thing
    }
}
于 2013-01-28T18:24:08.007 に答える
1

reCaptcha ソース コードを変更せずにクライアント側で必要な検証を行うために、フォームに CustomValidator を追加し、入力テキスト フィールドを検証する JavaScript 関数を作成しました。

<asp:CustomValidator ID="reqRecaptcha" runat="server" ClientValidationFunction="validateRecaptcha" Text="Required"></asp:CustomValidator>

ID生成された入力フィールドを調べるために、ページのソース コードを調べたところ、入力フィールドが常に であることがわかりましたrecaptcha_response_field。(間違っていたら訂正してください) これを知って、JavaScript を作成することができました (JQuery とカスタム関数を使用してコントロールの有効性をチェックします)。

    function validateRecaptcha(sender, args) {
        args.IsValid = isFieldValid("input[id$='recaptcha_response_field']");
    }

注: 開発者が reCaptcha コントロールの出力を変更した場合、バリデーターが機能しなくなる変更に気付かない場合があります。

于 2013-04-05T06:19:42.870 に答える
0

Altairis Web UI Toolkit の一部である ReCaptchaImage および ReCaptchaValidator コントロールを参照してください: http://altairiswebui.codeplex.com/

これは Web コンポーネントのオープン ソース セットであり、Web フォーム用の ReCaptcha の非常に優れた ASP.NET 標準準拠の (作成者であると言えますが :-) 実装が含まれています。

于 2011-01-11T21:49:27.617 に答える