我有一个实现对css文件的引用的用户控件,现在我想在页面上多次使用此用户控件,这将导致重复包含css文件。
使用javascript文件,使用ScriptManager
。
那么您对ScriptManager
的解决方案或类似方法的建议是什么?
答案 0 :(得分: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
答案 1 :(得分: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);
}
}
答案 2 :(得分: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文件的路径来检查它是否存在。