我正在使用MVC4 StyleBundle
捆绑一堆CSS。 IE 9或更低版本只需要一个CSS。
在我的BundleConfig
类RegisterBundles
方法中,我有:
if (HttpContext.Current.Request.Browser.Browser.Trim().ToUpperInvariant().Equals("IE") && HttpContext.Current.Request.Browser.MajorVersion <= 9)
cssBundle.Include("~/Content/ie.css");
但后来我遇到Request is not available in this context
错误。在RegisterBundles
方法中是否无法检测浏览器?
答案 0 :(得分:3)
您可以添加以下内容:
<script type="text/javascript">
var domLib = '@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Zepto")';
if (navigator.userAgent.indexOf('MSIE ') > -1) {
domLib = '@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Jquery")';
}
document.write('<script src="' + domLib + '"><\/script>');
</script>
在这个例子中,我使用库Zepto和Jquery(如果它是Internet Explorer)。这对我来说可以。 皮尔
答案 1 :(得分:1)
是的Tejs是正确的。捆绑包是全局的,不能根据请求而变化,因为它们在首次引用后缓存在服务器上。因此,您在上面所做的事情的问题在于,取决于首先访问请求的浏览器,这将填充缓存并确定所有后续请求将被接收的内容,无论它们是否是IE9。