我得到了一个用户控件,它实现了对css文件的引用,现在我想在页面上多次使用此用户控件,这将导致重复包含css文件。防止CSS文件的重复?
使用javascript文件,通过使用ScriptManager
很简单。
那么您对ScriptManager
的解决方案或类似方法有何建议?
我得到了一个用户控件,它实现了对css文件的引用,现在我想在页面上多次使用此用户控件,这将导致重复包含css文件。防止CSS文件的重复?
使用javascript文件,通过使用ScriptManager
很简单。
那么您对ScriptManager
的解决方案或类似方法有何建议?
还有就是要检查是否样式被注册到像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文件的路径。
这里是我以前用过的技术,虽然它可能不是最好的一个:
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
为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);
}
}
但不会引起循环开销? – DevMania 2009-04-28 18:02:47