我认为一种解决方案是将 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 放在面板内,以确保添加时验证控件位置正确