2012-07-20 52 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命令