我想将脚本和内容的位置从"~/Scripts/"
更改为"~/Scripts/" + version + "/"
,其中version是基于Web.config动态设置的变量。我尝试了以下但是没有帮助:
bundles.Add(new ScriptBundle("~/" + version + "/bundles/jquery").Include(
"~/Scripts/" + version+ "/jquery-{version}.js"));
有什么想法吗?
答案 0 :(得分:0)
您可以只为文件路径指定版本,并将其保留在URL之外。
您为捆绑包指定的URL ...
bundles.Add(new ScriptBundle("~/" + version + "/bundles/jquery").Include("~/Scripts/" + version+ "/jquery-{version}.js"));
^^^ the bundle URL ^^^
...是各种观点需要在其标签中引用的内容。因此,如果您动态创建捆绑包URL,则还需要执行此操作:
@Scripts.Render("~/" + version + "/bundles/jquery")
或
<script src="/" + version + "/bundles/jquery"></script>
捆绑包URL完全是任意的。您可以随心所欲地创建它,就像这样,请求将被路由以返回您的脚本包:
bundles.Add(new ScriptBundle("~/myAwesomeJQueryBundle").Include(
"~/Scripts/" + version+ "/jquery-{version}.js"));
所以可能没有必要在URL中构建版本号。
只要您使用@Scripts.Render
,您就不必担心更改URL以防止缓存,因为应用程序将在查询字符串中提供唯一的版本ID,如下所示:
https://yoursite.com/myAwesomeJQueryBundle?v=QfOK7KHBzkssV3c-12FMfeyPN1SXzcP1i0jSDRdWJpE1
如果捆绑包中包含的文件不同,则版本ID将不同。
还有一点说明:
除非有特定需求(例如您从其他网站请求捆绑包),否则请务必使用@Scripts.Render
而不是<script>
标记。由于捆绑器提供了该版本ID,因此它还添加了一个缓存控制标头,指示可以缓存一年的内容。