【发布时间】:2011-01-22 22:08:13
【问题描述】:
我使用下面的代码来动态包含一个 CSS 文件:
HtmlHead head = (HtmlHead)Page.Header;
HtmlLink link = new HtmlLink();
link.Attributes.Add("href", Page.ResolveClientUrl("~/App_Themes/Default/StyleSheet.css"));
link.Attributes.Add("type", "text/css");
link.Attributes.Add("rel", "stylesheet");
head.Controls.Add(link);
问题是:我只想做一次,而且只有当它没有真正包含在页面中时。
我如何验证它是否已经包含在内?
编辑:
告诉我使用 !IsPostBack 包含在页面加载中的答案不会解决我的问题,因为此代码将位于 Web 用户控件中,并且我的页面可能有很多相同的用户控件。
例如,我用下面的代码用javascript来做:
if (!Page.ClientScript.IsClientScriptIncludeRegistered("jsScript"))
{
Page.ClientScript.RegisterClientScriptInclude("jsScript", ResolveUrl("~/Utilities/myScript.js"));
}
【问题讨论】:
-
如果你的 CSS 结构合理,这可能是一个过早的优化。我无法想象你使用了这么多 CSS 会显着降低浏览器的速度。
-
@Robert Harvey:我知道,可能它不会减慢我的应用程序,我只是不喜欢在我的页面中放置垃圾代码的想法,今天我要放置一个 CSS只有 5KB,但是明天我装上 50KB 时,这将是一个问题......
-
@Jason:所以我需要更有可能发布更简单的问题?如果您查看我的问题,您会发现它们都很复杂,没有人回答可以解决问题的问题。
-
在您的示例中,您使用的是 App_Themes 目录。通过使用主题,ASP.NET 将自动将主题中的所有样式表链接到您的页面。您只需将 @Page 指令的 Theme 或 StylesheetTheme 属性设置为“Default”即可完成这项工作。如果您不希望这种行为,您应该考虑将样式表移到 App_Themes 目录之外。
标签: asp.net css include stylesheet verify