如何在服务器控件中使用验证控件?我遇到的问题是默认情况下,如果我这样做:
private TextBox _textbox;
RequiredFieldValidator _validator;
protected override void OnInit(object sender, EventArgs e)
{
_textbox= new TextBox {ID = "test"};
_validator = new RequiredFieldValidator{ControlToValidate = _textbox.ID};
}
protected override void OnLoad(object sender, EventArgs e)
{
this.Controls.Add(_textbox);
this.Controls.Add(_validator);
}
然后它工作正常,但因为我在文本框后面的代码中设置ID在实际生成的HTML中有一个测试ID(而不是ctl1_ctl2_test或者其他东西。)这意味着如果我在控件上使用了两次同一页然后我收到一个错误。如果我没有设置ID,那么它为null,验证器找不到控件。
任何帮助都会很棒,
谢谢,
乔
答案 0 :(得分:0)
只需将INamingContainer
添加到服务器控件实现的接口列表中:
public class RequiredTextBox : Control, INamingContainer
现在,子TextBox
的ID将由服务器控件的ID限定,从而避免ID冲突。