我在 .NET 4.0 中有一个 MVC 4 应用程序。我的网络托管服务提供商(网络解决方案)设置了虚拟目录,所以我不能使用默认的捆绑行为(我认为)。
在我的 _Layout 视图中,我有这一行:
@Scripts.Render("~/bundles/dd-d2")
在 BundleConfig.cs 我有
bundles.Add(new ScriptBundle("~/bundles/dd-d2").Include(
"~/Scripts/dd-d2.js"));
当我在 Visual Studio 中运行时,一切正常。但是当我上传到我的虚拟主机时,找不到该文件,因为它在捆绑路径前面附加了虚拟文件夹。而不是/bundles/dd-d2?v=BlahBlah
,我得到/ROOT_FOLDER/bundles/dd-d2?v=BlahBlah
我通过将其添加到 _Layout 文件中的行来解决此问题
@Scripts.Render(Url.Content("~/bundles/dd-d2"))
Url.Content 帮助程序将虚拟路径转换为应用程序绝对路径,并找到我捆绑的脚本文件。
现在,我使用这种方法遇到的问题是,如果我对 javascript 文件进行更改,它不会反映在输出的捆绑脚本文件中。即使我将它上传到我的虚拟主机,它也总是包含旧信息。该文件是否缓存在某处?有没有更好的方法来做到这一点?我想通过使用捆绑来利用我的脚本文件的缩小。
如果我这样做,它确实有效
<script src="@Url.Content("~/Scripts/dd-d2.js")" type="text/javascript"></script>
但是我的脚本没有被缩小。