我不知道这是否真的有可能,但我正在努力。
如果我有(复杂的)自定义服务器控件(在其他控件旁边)在UI上呈现TextBox。将服务器控件放在页面上时,是否可以将RequiredField验证器附加到该服务器控件,以便验证器验证该控件的Text属性,该属性指向呈现的TextBox的Text属性?
当然,我可以将RequiredField验证器直接合并到服务器控件中,但这是出于其他原因(我们在UI上自动呈现RequiredField验证器)。
感谢您的帮助。
答案 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")]
然后它应该工作。