如何在ASP.NET中添加用户之前验证用户条目 - CreateUserWizard

时间:2012-07-20 04:33:20

标签: c# asp.net vb.net

我认为问题就是这样, 使用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

任何建议,我该怎么做?

2 个答案:

答案 0 :(得分:0)

ASP.Net包含几个用于此目的的内置验证器控件:

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

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

  • RangeValidator。用于验证值是否落在特定范围

  • 之间
  • RegularExpressionValidator。用于验证正则表达式的值

  • 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
}

这些控件用于验证用户输入,确保输入有效,但您可能需要应用域验证以确保您可以安全地执行更改使用针对当前状态域的当前用户输入,此验证应在您的域对象或域命令中执行

答案 1 :(得分:0)

正如@Jupaol在问题评论中所说,e.Cancel = True实际上是诀窍阻止新用户的创建,但原因是 Captcha.IsValid它总是回归真实!经过一番搜索,我得到了new api key