0

当我的 ASP.NET 页面在 IE7 中进行回发时,所有的 CSS 都会丢失。我没有使用主题,而是将母版页中的 CSS 包含在后面的代码中。

    protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);
    AddStylesheetInclude("/static/css/global.css");
    AddStylesheetInclude("/static/css/sifr.css");
}

我的代码实际上是添加:

public virtual void AddStylesheetInclude(String url)
{
    HtmlLink link = new HtmlLink();
    link.Attributes["type"] = "text/css";
    link.Attributes["href"] = url;
    link.Attributes["rel"] = "stylesheet";
    Page.Header.Controls.Add(link);
}

它在 Firefox 中运行良好,只是在 IE 中。为了添加更多上下文,在包含的 CSS 文件中,它用于@import包含其余部分。

编辑

如果我采用所有@import规则并将其包含在实际的 HTML 中,它就会起作用。

4

4 回答 4

1

在对您的问题进行更多研究后,我发现链接不起作用的原因是(http://www.broken-links.com/2007/02/15/ie7-and-import-media-types / )IE7 与@import 不兼容。这是一件好事,因为 IE7 修复了 '!important' 和 '* html' 调试技巧,所以如果没有 @import 错误,在 IE7 中进行调试就没有简单的方法。但我相信他们下次会修复它(5 年左右?),届时在 IE* 中的调试将是 h*ll。

所以我想这是目前尝试在客户端添加 css 脚本的唯一方法,因此它将始终保持在页面上呈现。在您使用包含在 css 文件中的链接进行构建后,当您尝试将类添加到源文件中的控件时,您的 IntelliSense 应该选择您的类。如果没有发生这种情况,您的文件链接可能有问题,所以改为将您的 CSS 代码合并到您的源代码中,如下所示:

<style type="text/css"> 

.highlight{               
background-color: #C0DDE0;     
}
</style>

你应该能够做到这样

     <table id="table1" class="highlight"/>
于 2009-01-26T21:15:40.327 回答
0

如果即使在您将链接标签直接放在头部之后css仍然无法工作,我会说您包含css的方式没有任何问题,而是css文件本身。

尝试将它们全部包含在内,而不直接在头部添加@import。这样您就可以排除导入的任何问题。

于 2009-01-26T21:48:40.043 回答
0

您是否验证过回发后该标签仍在页面上?我似乎记得一些关于可靠操作 HEAD 标签的困难。

于 2009-01-26T22:06:01.753 回答
0

嗯,你有什么理由像这样引用你的 CSS 文件吗?

于 2009-01-26T22:38:35.823 回答