-1

我不知道这是否真的可能,但我正在尽力而为。

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

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

谢谢你的帮助。

4

2 回答 2

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 放在面板内,以确保添加时验证控件位置正确

于 2009-05-04T21:40:44.907 回答
0

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

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

[ValidationProperty("Text")]

然后它应该工作。

于 2009-05-05T11:19:18.870 回答