【发布时间】:2009-02-18 18:14:41
【问题描述】:
我有一个使用主题、iframe 和母版页的 asp.net Web 应用程序。我用 IE Web developer 和 FF Firebug 分析了这些页面,发现每个页面都引用了同一个 css 文件两次。我不知道这是因为母版页模型还是因为 iframe。有人知道如何只引用一次 css 吗?
【问题讨论】:
-
您是否有我们可以查看的链接或您如何包含 css 的一些示例代码?
我有一个使用主题、iframe 和母版页的 asp.net Web 应用程序。我用 IE Web developer 和 FF Firebug 分析了这些页面,发现每个页面都引用了同一个 css 文件两次。我不知道这是因为母版页模型还是因为 iframe。有人知道如何只引用一次 css 吗?
【问题讨论】:
我遇到了同样的问题,我发现了我的情况 -
添加到 web.config 时:<pages styleSheetTheme="Default" theme="Default"></pages>
.css 文件将被渲染到源两次,而不是仅添加 :<pages theme="Default"></pages>
然后它只会被渲染一次。
【讨论】:
您是否从内容页面引用此 CSS 文件?如果是这样,这将导致 CSS 被引用两次。您无需引用内容页面中的 CSS,只需引用母版页即可。
【讨论】:
iframe 是一个独特的渲染上下文,因此您确实无法合理地绕过它,需要加载它的 CSS。如果它使用与嵌入页面相同的样式表,那么是的,该样式表将被引用两次。
【讨论】:
如果您在配置中设置页面主题,则会自动引用 App_Themes/YourTheme 文件夹中的所有 .css 文件。
<system.web>
<pages theme="ThemeName">
<controls>
</controls>
</pages>
<system.web>
因此,您无需添加任何对 CSS 文件的引用。
但有一个问题,CSS 文件将按字母顺序引用(据我所知,无法更改),因此如果您希望一个 .css 文件覆盖另一个文件,则需要小心文件名。
【讨论】:
我猜你的答案是停止使用 IFRAME。如果您需要使用可重用的内容块,您可以嵌套母版页。人们使用 IFRAME 的一个原因是当他们从远程站点提供内容时,但既然你说它调用的是同一个 CSS 文件,事实并非如此。
有关 IFRAME 正在做什么的更多信息会有所帮助。
【讨论】:
我只在我的一些 aspx 页面上遇到了同样的问题,我刚刚修复了它。我在每个 aspx 页面继承的基类中覆盖并设置 StyleSheetTheme 属性。现在,如果我在标记页面中另外设置StyleSheetTheme,则链接定义会呈现两次。当您手动设置Theme 属性时可能会发生同样的情况
<%@ Page Title="My Page" StyleSheetTheme="DefaultTheme" Language="C#" MasterPageFile="~/Master.Master" AutoEventWireup="true"
CodeBehind="Details.aspx.cs" Inherits="MyProject.Article.Details" %>
【讨论】: