Я пытаюсь создать пользовательский элемент управления веб-частью. Я собираюсь использовать Mono, так что нет, я не могу просто использовать ASP.Net (это то, что мы использовали до того, как решили перейти в Mono).
По сути, мы хотим иметь пользовательский элемент управления с именем WebPart
, который является абстрактным классом, из которого происходят наши веб-части.
В классе WebPart
я хочу, чтобы он просто содержал заголовок и контент (оба были способны применять таблицы стилей).
Прямо сейчас у меня в конструкторе WebPart
просто есть метка и панель, добавляемые в расположение 0 элементов управления, чтобы заголовок отображался (с меткой, помещаемой на панель). Теперь вот моя проблема. Нет простого способа содержания контента WebPart (который будет просто разметкой и тому подобным для производного элемента управления), чтобы я мог применить класс стилей отдельно только к содержимому и только к заголовку производного элемента управления.
Единственное решение, которое я вижу, это сделать что-то вроде Panel
для заголовка и содержимого, а затем переопределить WebPart.Controls
, чтобы Controls=pnlContent.Controls
.
Каковы последствия этого? Будет ли это портить уникальные идентификаторы или JavaScript? Есть ли лучший способ обойти это? Это нормально для пользовательского элемента управления?
Какие проблемы могут возникнуть при переопределении индексатора Control
пользовательского элемента управления для указания на свойство Control
другого элемента управления?
Мой предложенный класс будет примерно таким (очень упрощенным)
abstract class WebPart{
protected lblTitle=new Label();
protected pnlContent=new Panel();
public ControlCollection Controls{
get{
return pnlContent.Controls;
}
}
public WebPart(){
base.Controls.Add(lblTitle);
base.Controls.Add(pnlContent);
}
}
Кроме того, могут ли ASP.Net иметь проблемы при рендеринге, потому что я скрываю свойство base.Controls? (таким образом, это только представило бы pnlContent.Controls
, а не this.Controls
?)