2011-12-11 546 views
2

我有一個ASP.NET用戶控件(註冊表單),我需要添加一個requiredFieldValidator運行時。但是,它不起作用。 這是我如何添加驗證器。添加RequiredFieldValidator運行時

System.Web.UI.WebControls.RequiredFieldValidator nameValidator = new System.Web.UI.WebControls.RequiredFieldValidator(); 
nameValidator.ControlToValidate = "SignUpName"; 
nameValidator.ErrorMessage = "You must provide your name"; 
nameValidator.ID = "nameValidator"; 
nameValidator.Display = ValidatorDisplay.Dynamic; 
this.Page.Validators.Add(nameValidator); 

我在想什麼?

-------- ---------編輯

我從來沒有發現一個解決方案。我通過使用CustomValidator並手動完成所有驗證,實現了我的目標。

+0

我不是WebForms專家,但如果您告訴您從哪裏調用此代碼,它可以幫助其他人。 Page_Load中?按鈕點擊?是OnInit? – goenning

+0

在Page_Load上調用。我不確定這是否正確。 – ThomasVestergaard

回答

3

如果要添加控件,包括動態驗證,那麼你需要將它們添加在Page_Init不Page_Load中,否則它們不會添加到控制樹正確,即他們不」 t參與ViewState

您可能更好地使用自定義驗證程序,而不是動態添加必需的驗證程序。在asp.net中的動態控件對我來說只是麻煩。如果還有其他解決方案,我會避免。

+1

動態控制變得非常迅速 – lnu

+0

如果我們必須添加一些控件作爲以及按鈕點擊事件的驗證器? –

0

請您用如下嘗試:

剛好路過控制id來ControlToValidate

nameValidator.ControlToValidate = SignUpName.ClientID; // or SignUpName.UniqueID 
+0

他們都沒有工作:(感謝您的建議,雖然 我可以通過使用CustomValidator控件達到我的目標,但不是很漂亮,但它的工作 – ThomasVestergaard

0

考慮以下兩點:

  • 充分利用控制驗證是在添加驗證器之前添加到頁面控件的層次結構中。
  • 您的驗證添加到Page.ControlsPage.Validators