IE 7中PostBack上的ASP.NET CSS无效

时间:2009-01-26 20:57:22

标签: asp.net css postback

当我的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 个答案:

答案 0 :(得分: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"/>

答案 1 :(得分:0)

如果即使你直接在头部放置了一个链接标签,css仍然无效,我会说你包含css的方式没有任何问题,而是css文件自己。

尝试将所有内容直接包含在@import中。这样您就可以排除导入的任何问题。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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