2009-04-28 68 views
2

我得到了一个用户控件,它实现了对css文件的引用,现在我想在页面上多次使用此用户控件,这将导致重复包含css文件。防止CSS文件的重复?

使用javascript文件,通过使用ScriptManager很简单。

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

回答

1

还有就是要检查是否样式被注册到像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文件的路径。

+0

但不会引起循环开销? – DevMania 2009-04-28 18:02:47

3

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

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