Предотвращение дублирования файлов CSS? - PullRequest
2 голосов
/ 28 апреля 2009

У меня есть пользовательский элемент управления, который реализует ссылку на файл CSS, теперь я хочу использовать этот элемент управления много раз на странице, и это приведет к дублированию включения файла CSS.

С файлами javascript это просто с помощью ScriptManager.

Так что вы предлагаете для решения или аналогичного подхода к ScriptManager?

Ответы [ 3 ]

3 голосов
/ 28 апреля 2009

Вот техника, которую я использовал раньше, хотя, возможно, она не самая лучшая:

    Dim cssLink As String = String.Format("<link rel='stylesheet' type='text/css' href='{0}/css/cssLink.css' />", Request.ApplicationPath)
    If (From c As LiteralControl In Page.Header.Controls.OfType(Of LiteralControl)() Where c.Text = cssLink).Count = 0 Then
        Page.Header.Controls.Add(New LiteralControl(cssLink))
    End If
2 голосов
/ 09 мая 2012

Поскольку q помечен как c #, я мог бы также вставить версию c # из вспомогательного класса:

 public static void AddStyleLink(string href)
 {
      Page page = (Page)HttpContext.Current.CurrentHandler;        

      var existing = 
          (from c 
          in page.Header.Controls.OfType<HtmlGenericControl>() 
          where c.Attributes["href"] == href
          select c).FirstOrDefault();

      if (existing == null)
      {
          HtmlGenericControl link = new HtmlGenericControl("link");
          link.Attributes.Add("rel", "stylesheet");
          link.Attributes.Add("href", href);
          page.Header.Controls.Add(link);
      }            
 }
1 голос
/ 28 апреля 2009

Нет простого способа проверить, зарегистрированы ли стили на странице, как утилита ClientScript.

Если вы зарегистрируете свои стили как внешний CSS-файл на странице, подобной этой:

HtmlLink link = new HtmlLink();
link.Href = relativePath;
link.Attributes["type"] = "text/css";
link.Attributes["rel"] = "stylesheet";
Page.Header.Controls.Add(link);

Затем можно проверить, существует ли он, зацикливая коллекцию Controls заголовка страницы и ища путь к файлу CSS.

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