Я создал собственный серверный элемент управления, который наследуется от CompositeControl. В методе CreateChildControls я добавляю вход и элемент управления меткой (есть и другие) в дерево элементов управления. Я переопределил свойство Enabled, так что я получаю / устанавливаю только свойство Enabled входа, а не свойство Enabled составного элемента управления. В пользовательском элементе управления, где я использую этот элемент управления сервером, я добавляю Enabled="false"
к разметке. Однако, что бы я ни делал, к контейнеру div добавляется атрибут disabled="disabled"
(как и некоторые дочерние элементы).
Конечно, это, кажется, работает нормально во всех браузерах, кроме IE 6. Если внутри отключенного элемента управления есть легенда набора полей или список переключателей, текст исчезает. Первоначально я пытался увидеть, есть ли какой-то дефект, который нужно исправить с помощью CSS для IE 6. Затем я заметил disabled="disabled"
на тегах, которые я даже не думал, что они имеют такой атрибут.
Что именно я здесь не так делаю?
Контроль выборки, который демонстрирует поведение:
public class TextBoxWithLabel : CompositeControl
{
private readonly Label _label = new Label();
private readonly TextBox _textBox = new TextBox();
protected override HtmlTextWriterTag TagKey
{
get { return HtmlTextWriterTag.Div; }
}
public string LabelText
{
get { return _label.Text; }
set { _label.Text = value; }
}
public override bool Enabled
{
get { return _textBox.Enabled; }
set { _textBox.Enabled = value; }
}
protected override void CreateChildControls()
{
_label.ID = ID + "_label";
_textBox.ID = ID + "_field";
_label.AssociatedControlID = _label.ID;
Controls.Add(_label);
Controls.Add(_textBox);
}
}
Использование:
<test:TextBoxWithLabel id="tester" runat="server" LabelText="My TextBox" Enabled="false" />