0

我正在使用 MVC4StyleBundle捆绑一堆 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

4

2 回答 2

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,如果是 Internet Explorer,则使用 Jquery。这对我来说可以。皮埃尔

于 2013-01-17T17:30:16.657 回答
1

是的,Tejs 是正确的。Bundles 是全局的,不能根据请求而变化,因为它们在第一次被引用后被缓存在服务器上。因此,您在上面所做的问题在于,取决于哪个浏览器首先点击请求,这将填充缓存并确定所有后续请求将收到什么,无论它们是否是 IE9。

于 2012-10-25T17:50:31.593 回答