CssClass и изображения по умолчанию в ServerContol - PullRequest
2 голосов
/ 29 марта 2010

Я пишу ServerControl в ASP.NET 3.5 и раскрываю CssClass, чтобы пользователь мог манипулировать внешним видом элемента управления. Моя проблема в том, что я хочу установить разумные значения по умолчанию, чтобы пользователю не приходилось настраивать CSS, если он не хочет изменить значения по умолчанию.

Моя конкретная проблема заключается в том, что мой элемент управления генерирует HTML-элементы div, которые должны отображать фоновые изображения. Я хочу, чтобы пользователь мог указать другое изображение в CSS, но я хочу отобразить фоновое изображение по умолчанию, и я не могу заставить это работать.

Весь серверный элемент управления передается в виде элемента div с именем класса, установленным на значение, предоставленное пользователем в CssClass. Div, которому нужно фоновое изображение, заключен в этот внешний div с собственным именем класса. В настоящее время я устанавливаю фоновое изображение в CSS на странице, которая содержит элемент управления:

   <style type="text/css">
      .cssClass .innerDiv {
         background-image: url("http://....");
      }
   </style>

С этим рисуется правильное изображение. Но если его там нет, изображение не рисуется.

Я хочу, чтобы ServerControl испускал некоторый CSS, который будет определять эти URL-адреса изображений, который был бы переопределен любым CSS-файлом, добавленным пользователем, и чтобы этот CSS-код по умолчанию включал URL-адреса к изображениям, встроенным в Сборка ServerControl.

И я тоже не уверен, как это сделать. И в этом отношении я не уверен, что это лучший подход.

Есть идеи?

1 Ответ

1 голос
/ 29 марта 2010

Предоставляйте различные свойства с помощью CSS-классов, таких как HeaderCssClass, ItemCssClass, если вам требуется более одного стиля.

Кроме того, вы можете проверить, что если у пользователя указано имя класса CSS, вы его используете; в противном случае используйте значение по умолчанию и не указывайте пользовательский CSS в элементе управления.

В логике рендеринга вы можете отобразить правильное имя класса CSS в качестве атрибута DIV в зависимости от того, указал ли пользователь что-либо. Так что вы можете сделать:

if (this.HeaderCssClass != null)
   writer.AddAttribute("class", this.HeaderCssClass);
else
   writer.AddAttribute("class", "standard");

writer.RenderBeginTag("div");

И записывайте свой стандартный CSS только в том случае, если HeaderCssClass равен нулю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...