如何根据浏览器版本捆绑特定的CSS?

时间:2012-10-23 21:44:18

标签: c# asp.net-mvc-4 asp.net-optimization

我正在使用MVC4 StyleBundle捆绑一堆CSS。 IE 9或更低版本只需要一个CSS。

在我的BundleConfigRegisterBundles方法中,我有:

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方法中是否无法检测浏览器?

2 个答案:

答案 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。