0

System.Web.Optimization がバンドルをレンダリングする方法を変更する方法はありますか?

から:

<script src="/bundles/js/bundlename?v=GMFuN8gzKMcwk5BwaMfgjUlieAXKThyQd8twrVplJ8A1"></script>

このようなカスタムに:

<script src="/bundles/js/v-GMFuN8gzKMcwk5BwaMfgjUlieAXKThyQd8twrVplJ8A1/bundlename"></script>

更新:理想的ではありませんが、小さな厄介な回避策:

public static class BundlesHelper
{
        public static IHtmlString RenderScripts(params string[] paths)
        {
            #if DEBUG
            return System.Web.Optimization.Scripts.Render(paths);
            #endif

            // Get raw string
            var rawString = System.Web.Optimization.Scripts.Render(paths).ToHtmlString();

            // Get version value
            var version = Regex.Match(rawString, @"\?v=([0-9a-zA-Z_-])+").Value;

            // Remove old hash
            rawString = rawString.Replace(version, "");

            // Remove script end tag
            rawString = rawString.Replace("</script>", "");

            // Get last index of "/"
            var index = rawString.LastIndexOf('/');

            // Return new string
            return new HtmlString(rawString.Insert(index, "/v-" + version.Replace("?v=", "")) + "</script>");
        }
}
4

1 に答える 1

1

いいえ、それは重要ではありません。クエリ文字列部分はキャッシュバスターです。ファイルは、スクリプト src が示す場所にあり、それは変更されません。目的のバージョンでは、ファイルの実際の物理的な場所を変更する必要があります。

于 2015-01-30T16:12:31.790 に答える