0

私は MVC4StyleBundleを使用して大量の CSS をバンドルしています。IE 9 以下でのみ必要な CSS が 1 つあります。

メソッドの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は正しいです。バンドルはグローバルであり、最初に参照された後にサーバーにキャッシュされるため、リクエストに基づいて変更することはできません。したがって、上記で行っていることの問題は、最初にリクエストをヒットしたブラウザに応じて、キャッシュにデータが入力され、IE9 であるかどうかに関係なく、後続のすべてのリクエストが受け取るものを決定することです。

于 2012-10-25T17:50:31.593 に答える