【问题标题】:Preventing the duplication of CSS files?防止CSS文件的重复?
【发布时间】:2009-04-28 17:16:32
【问题描述】:

我有一个实现对 css 文件的引用的用户控件,现在我想在页面上多次使用此用户控件,这将导致 css 文件的重复包含。

对于 javascript 文件,使用 ScriptManager 很简单。

那么您对ScriptManager 的解决方案或类似方法有何建议?

【问题讨论】:

    标签: c# asp.net css


    【解决方案1】:

    这是我以前使用过的一种技术,虽然它可能不是最好的:

        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】:

      由于 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);
            }            
       }
      

      【讨论】:

        【解决方案3】:

        没有像 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 文件的路径来检查它是否存在。

        【讨论】:

        • 但循环不会导致开销?
        • 标头的控件集合将只有具有 runat=server 属性的标签。如果添加的话,唯一的控件可能是集合中的这个 css 文件:)
        猜你喜欢
        • 2012-02-15
        • 2019-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多