如何更改脚本和内容写入的默认位置

时间:2017-06-09 14:17:43

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

我想将脚本和内容的位置从"~/Scripts/"更改为"~/Scripts/" + version + "/",其中version是基于Web.config动态设置的变量。我尝试了以下但是没有帮助:

bundles.Add(new ScriptBundle("~/" + version + "/bundles/jquery").Include(
                        "~/Scripts/" + version+ "/jquery-{version}.js"));

有什么想法吗?

1 个答案:

答案 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,因此它还添加了一个缓存控制标头,指示可以缓存一年的内容。