添加RequiredFieldValidator运行时

时间:2011-12-11 12:49:00

标签: c# asp.net validation

我有一个ASP.NET用户控件(一个注册表单),我需要添加一个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并手动完成所有验证来实现我的目标。

3 个答案:

答案 0 :(得分:3)

如果要动态添加包含验证器的控件,则需要在Page_Init而不是Page_Load上添加它们,否则它们不会正确添加到控件树中,即它们不参与ViewState

您可能更好地使用自定义验证器,而不是动态添加所需的验证器。 asp.net中的动态控件对我来说只是麻烦。如果有另一种解决方案,我会避免。

答案 1 :(得分:0)

请您试试如下:

只需将控件ID传递给ControlToValidate

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

答案 2 :(得分:0)

考虑以下两点:

  • 在添加验证程序之前,将控件验证添加到页面控件的层次结构中。
  • 将验证工具添加到Page.Controls而不是Page.Validators