0

Register.aspx のデフォルト テンプレートを使用して、CreateUserWizard を Captcha コントロールでカスタマイズしました。また、ユーザーを追加する前にチェックするビジネス ロジックもいくつかあります。次の方法を試してみましたが、うまくいきませんでした。動作しません。e.Cancel が True であっても、とにかくユーザーが追加されています。

   Protected Sub CreateUserWizard1_CreatingUser(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.LoginCancelEventArgs) Handles CreateUserWizard1.CreatingUser
    Dim Captcha As RecaptchaControl = CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("recaptcha1"), RecaptchaControl)
    If Not (Captcha.IsValid and ValidateUserEntries) Then
        e.Cancel = True
    End If
   End Sub

何か提案があれば、どうすればいいですか?

4

2 に答える 2

0

ASP.Net には、この目的のためにいくつかの組み込みバリデータ コントロールが含まれています。

  • CompareValidator。2 つの値、通常は 2 つのコントロール (パスワードとパスワードの確認など) を比較するために使用されます。a の値がTextBox特定の型 (int、date、bool...) であることを確認するためにも使用できます。

  • CustomValidator。カスタム ロジックを記述するために使用します。サーバーで実行されるイベントが含まれており (サーバーで検証する場合)、クライアントで検証する JavaScript 関数を指定できます。

  • RangeValidator . 値が特定の範囲内にあることを検証するために使用されます

  • 正規表現バリデーター。正規表現に対して値を検証するために使用されます

  • RequireFieldValidator。コントロールが必要であることを示します

バリデーターを追加して要件を満たすと、JavaScript のサポートとサーバー側のサポートが自動的に得られます。

ページを検証するには、次のように検証を呼び出します。

protected void CreateUserWizard1_CreatingUser(object sender, LoginCancelEventArgs e)
{
   // optionally specify the ValidatinGroup used. this.Validate("validation group"); 
   this.Validate();
   if(!this.IsValid)
   {
       e.Cancel = true;
       return;
   }
   // execute your code
   // call here your domain logic to execute changes
   // remember to apply domain rules in your domain before executing the current changes
}

これらのコントロールはユーザー入力を検証するために使用され、入力が有効であることを保証しますが、ドメインの現在の状態に対して現在のユーザー入力を使用して変更を安全に実行できることを保証するために、ドメイン検証を適用する必要がある場合があります。この検証は、ドメイン オブジェクトまたはドメイン コマンドで実行

于 2012-07-20T04:41:54.480 に答える
0

@Jupaolが質問のコメントで言ったように、e.Cancel = True実際には新しいユーザーの作成を停止するトリックを行いますが、その理由は常にtrueを返すためでした !、少し検索した後、新しいAPIキーCaptcha.IsValidを取得することで機能するようになりました

于 2012-07-21T06:20:56.187 に答える