在自定义服务器控件上附加必需的验证器以呈现文本框

时间:2009-05-04 21:12:57

标签: c# asp.net servercontrols

我不知道这是否真的有可能,但我正在努力。

如果我有(复杂的)自定义服务器控件(在其他控件旁边)在UI上呈现TextBox。将服务器控件放在页面上时,是否可以将RequiredField验证器附加到该服务器控件,以便验证器验证该控件的Text属性,该属性指向呈现的TextBox的Text属性?

当然,我可以将RequiredField验证器直接合并到服务器控件中,但这是出于其他原因(我们在UI上自动呈现RequiredField验证器)。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我认为一种解决方案是将TextBox控件放在Panel中,然后在Page_Load事件处理程序上动态添加RequiredValidator控件。

<asp:Panel ID="Panel1" runat="server">
 <MyCustomTextBox ID="TextBox1" runat="server"></MyCustomTextBox>
 </asp:Panel>
<asp:Button ID="Button1" runat="server" Text="Button" />

然后

protected void Page_Load(object sender, EventArgs e)
        {
            var validator = new RequiredFieldValidator();
            validator.ControlToValidate = "TextBox1";
            validator.ErrorMessage = "This field is required!";
            Panel1.Controls.Add(validator);

        }

我将CustomTextBox放在面板中,以确保添加时验证控制位置正确

答案 1 :(得分:0)

我明白了,第二次我回答自己的帖子:)下次我会做更深入的研究。

对于那些可能遇到同样问题的人。您必须在服务器控件的类上指定ValidationProperty属性。例如,如果您的服务器控件公开了一个属性“Text”,该属性显示给用户并且还应该进行验证,则添加以下内容:

[ValidationProperty("Text")]

然后它应该工作。