设置控件';用于验证控件的代码隐藏中的ID
本文关键字:控件 代码 隐藏 ID 用于 设置 验证 | 更新日期: 2023-09-27 18:21:24
如何在服务器控件中使用验证控件?我的问题是,默认情况下,如果我做这样的事情:
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为test(而不是ctl1_ctl2_test或其他什么。)这意味着,如果我在同一页面上使用该控件两次,就会出现错误。如果我没有设置ID,那么它就是空的,验证器找不到控件。
任何帮助都会很好,
谢谢,
Joe
只需将INamingContainer
添加到服务器控件实现的接口列表中即可:
public class RequiredTextBox : Control, INamingContainer
现在,子TextBox
的ID将由服务器控件的ID确定范围,从而避免ID冲突。