我有一个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并手动完成所有验证来实现我的目标。
答案 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