C# 添加RequiredFieldValidator运行时

C# 添加RequiredFieldValidator运行时,c#,asp.net,validation,C#,Asp.net,Validation,我有一个ASP.NET用户控件(一个注册表单),我需要添加一个requiredFieldValidator运行时。但是,它不起作用。 下面是我如何添加验证器的 System.Web.UI.WebControls.RequiredFieldValidator nameValidator = new System.Web.UI.WebControls.RequiredFieldValidator(); nameValidator.ControlToValidate = "SignUpName"; n

我有一个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并手动执行所有验证,我实现了我的目标。

请尝试以下方法:

只需将控件id传递给
ControlToValidate

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

考虑以下两件事:

  • 在添加验证程序之前,将要验证的控件添加到页面控件的层次结构中
  • 将验证器添加到
    页面。控件
    而不是
    页面。验证器

如果要动态添加包含验证器的控件,则需要在页面_Init而不是页面_Load上添加它们,否则它们无法正确添加到控件树中,即它们不参与ViewState


不过,您最好使用自定义验证器,而不是动态添加所需的验证器。asp.net中的动态控件对我来说只不过是个麻烦。如果有其他解决方案,我会避免使用。

我不是WebForms专家,但如果您知道从何处调用此代码,这将有助于其他人。页面加载?按钮点击?OnInit?在加载页面上调用。我也不确定这样做是否正确。它们都不起作用:(不过,谢谢你的建议。我可以通过使用CustomValidator控件来实现我的目标。虽然不太漂亮,但很有效。如果我们必须在按钮单击事件中添加一些控件以及它们的验证程序,该怎么办?