当我的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中,它就可以工作。
答案 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文件?