2011-10-31 36 views
0

,我在下面的格式使用正則表達式構建服務器端驗證:校驗繼續下去,即使錯誤輸入

protected void valMessage_ServerValidate(object source, ServerValidateEventArgs args) 
{ 
    regex = new Regex(@"^\d+$"); 

    if (regex.Match(args.Value).Success == true) 
     args.IsValid = true; 
    else 
     args.IsValid = false; 
} 

這是連接到一個自定義的驗證。問題是,即使它失敗(即當args.IsValid = false;)頁面仍然正常繼續。它不應該在IsValid = false找到控制權時立即停止?爲什麼我的代碼仍在運行?

+0

你知道有一個RegularExpressionValidator可以幫你嗎? – drdwilcox

回答

1

沒有看到「頁面繼續運行」的含義,很難說。假設您有一個事件處理程序響應點擊「提交」按鈕,您應該檢查事件處理程序中的Page.IsValid。

我經常犯的另一個錯誤是忘記在按鈕和我所有的驗證器上都設置ValidationGroup。

+0

哦,我需要手動檢查?我打算asp.net檢查頁面是否自動生效。至少它與所有其他的驗證者一樣。 – TheGateKeeper

+0

那麼,永遠的驗證器文章建議檢查Page.IsValid反正,可能在javascript被禁用的情況下。 – drdwilcox

0

1.使用Page.IsValid()檢查Page_Load事件。 2.您可以使用Page.Validate()進行驗證。你的服務器端驗證是否觸發? 3.如果步驟2的答案是否定的,那麼請驗證

  1. 自定義驗證器的OnServerValidate屬性已經設置了正確的服務器驗證功能。
    1. 您已經將Corrent驗證組設置爲Custom Validator。
0

沒有真正在ASP.Net專家....你應該通過驗證控件一次,幾乎所有的驗證完成後本身有...

RequiredField Validator 
Compare Validator 
RegularExpression Validator 
Range Validator 
Custom Validator 
Validation Summary 

你可以得到簡要說明herehere。希望能幫助到你。