在我的ASP.NET MVC应用程序中,我以下列方式添加CSS和JavaScript文件:
@Script.AddCss("~/Content/css/style2.css", siteWide: true)
@Script.AddCss("~/Content/css/tipsy.css", siteWide: true)
@Script.AddJavaScript(localPath: "~/Content/js/modernizr-2.5.3.js", siteWide: true)
@Script.AddJavaScript(localPath: "~/Content/js/jquery/jquery.datatables.js", siteWide: true)
输出如下所示:
@Script.OutputCss()
对于JavaScript几乎相同:
@Script.OutputJavaScript()
然后模板引擎将所有文件合并到AXD文件中,并放入保留内容类型的页面源。
这适用于所有浏览器,但不适用于IE9。有时样式表未加载,并且控制台中显示以下错误消息:
SEC7113: CSS was ignored due to mime type mismatch
scripts.axd?type=Stylesheet&hash=74A0F67DE9D74AFCDAE1AA539EA11099
除此之外,当您查看“网络”选项卡时,AXD文件将被加载两次 - 两个用于CSS的AXD文件和用于JavaScript的两个AXD文件。每个文件中的一个加权0个字节。这种情况并非总是如此,但有时只是偶尔发生。
有人可以帮我解决问题所在吗?
事先谢谢你。
答案 0 :(得分:2)
由于MIME类型不匹配,在9和10中忽略了css。通过名为FIle TypesMan的实用程序可以更正MIME类型。它是由NirSoft创建的免费软件。事实证明,.css的MIME类型已更改为text / plain,从而阻止了渲染我的样式。使用FileTypesMan将其更改回text / css修复了问题。
答案 1 :(得分:-2)
在IE9中,当原始页面不在受信任区域时,您需要跨域样式表的文本/ CSS MIME类型。当它来自受信任区域时,它应该在没有text / CSS MIME的情况下工作,这可能是你有时只遇到问题的原因。
因此,请确保您的页面指令中存在ContentType声明:
<%@ Page Language="C#" ContentType="text/css" %>
希望这是个问题。