2012-07-20 20 views
0

我认为这个问题说明了一切, 使用Register.aspx中的默认模板,我已经用Captcha控件定制了CreateUserWizard,我也有要检查一些业务逻辑添加用户之前,我曾尝试以下方法,但它没有工作,用户被添加反正即使e.Cancel为True如何在ASP.NET中添加用户之前验证用户条目 - CreateUserWizard

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 

任何建议,我会怎样做这个?

+1

嗯......你确定你设置e.Cancel为真? – aquinas 2012-07-20 05:19:50

+1

顺便说一句,除了我的回答,我想品脱的是,你的代码看起来不错。如果您的验证被绕过,它只是意味着它是有效的,所以我建议你仔细检查您的验证规则,因为设置'e.Cancel = TRUE;实际执行技巧停止新用户的创建 – Jupaol 2012-07-20 07:03:05

回答

0

作为@Jupaol在问题评论中表示,e.Cancel = True实际上是停止创建新用户的诀窍,但原因在于它总是返回true !,经过一些搜索后,我通过获取它来工作一个new api key

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 
} 

这些控件是用来验证用户输入,保证输入是有效,但是你可能需要申请域名验证,以保证你能安全地执行使用针对您的域的当前状态的当前用户输入的变化,这种验证应该在你的域对象进行或domain命令