0

我认为问题说明了一切,使用 Register.aspx 中的默认模板,我已经使用 Captcha 控件自定义了 CreateUserWizard,在添加用户之前我还需要检查一些业务逻辑,我尝试了以下方式但它没有'不起作用,即使 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 包含几个用于此目的的内置验证器控件:

  • 比较验证器。用于比较两个值,通常是两个控件,例如密码和确认密码。它还可以用于确保 a 的值TextBox是某种类型(int、date、bool...)

  • 自定义验证器。用于编写您的自定义逻辑。它包含一个要在服务器上执行的事件(在服务器上验证时),您可以指定一个 JavaScript 函数来在客户端上验证

  • 范围验证器。用于验证值是否在特定范围内

  • 正则表达式验证器。用于根据正则表达式验证值

  • 要求字段验证器。表示需要控件

添加验证器以满足您的要求后,您将自动获得 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实际上可以阻止创建新用户,但原因是 Captcha.IsValid它总是返回 true!,经过一番搜索后,我通过获取新的 api 密钥让它工作

于 2012-07-21T06:20:56.187 回答