设置控件';用于验证控件的代码隐藏中的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

设置控件';用于验证控件的代码隐藏中的ID

只需将INamingContainer添加到服务器控件实现的接口列表中即可:

public class RequiredTextBox : Control, INamingContainer

现在,子TextBox的ID将由服务器控件的ID确定范围,从而避免ID冲突。