Sam*_*Sam 4 bundle asp.net-mvc-4
我要执行以下操作:
@Scripts.Render("~/bundles/jquery?version=1"])
Run Code Online (Sandbox Code Playgroud)
版本值必须是动态的,并且应该与Cookie中定义的值匹配。
如何将此参数添加到Scripts.Render?
我已经用jQuery尝试过类似的方法,但是没有运气:
@Scripts.Render("~/bundles/jquery?version=" + $.cookie('version'))
Run Code Online (Sandbox Code Playgroud)
默认情况下,MVC 优化会自动将版本参数添加到发布版本的捆绑链接中,但不会用于调试。例如,当您部署站点时,到/bundles/modernizr 的链接将变为/bundles/modernizr?v=inCVuEFe6J4Q07A0AcRsbJic之类的内容,并且 JavaScript 会被缩小。
如果捆绑包中的其中一个文件已更改,则下次部署时参数会发生更改,因此链接的文件将被浏览器缓存,但当它们在新版本中发生更改时,会从服务器重新加载。
为了更轻松地调试,在调试中禁用优化(= 未添加版本参数且未缩小代码)。如果你想覆盖它,你可以在 web.config 中将编译调试属性设置为 false,或者你可以在代码中启用优化,如下所示:
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
// Code removed for clarity.
BundleTable.EnableOptimizations = true;
}
Run Code Online (Sandbox Code Playgroud)
有关完整详细信息,请参阅 http://www.asp.net/mvc/overview/performance/bundling-and-minification,特别是“控制捆绑和缩小”和“捆绑缓存”部分。
更换
@Scripts.Render("~/bundles/jquery?version=1"])
Run Code Online (Sandbox Code Playgroud)
与
@{string version = 1}
@Scripts.RenderFormat("<script type=\"text/javascript\" src=\"{0}?nocache="+ version +"\"></script>", "~/bundles/jquery")
Run Code Online (Sandbox Code Playgroud)
如这篇文章所示:http : //www.jomendez.com/2016/05/26/how-to-avoid-js-files-cache-script-bundle-with-razor/
据我所知 @Scripts.Render("~/bundles/jquery") 不是路径。这只是名字。因此,如果您想使用不同的版本,您应该在 BundleConfig 中创建两个捆绑包:
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/jquery-ver191").Include(
"~/Scripts/jquery-1.9.1js"));
bundles.Add(new ScriptBundle("~/bundles/jquery-ver202").Include(
"~/Scripts/jquery-2.0.2js"));
}
Run Code Online (Sandbox Code Playgroud)
您可以在您看来调用必要的版本:
@Scripts.Render("~/bundles/jquery-ver191")
Run Code Online (Sandbox Code Playgroud)
或者
@Scripts.Render("~/bundles/jquery-ver202")
Run Code Online (Sandbox Code Playgroud)
编辑:根据您的评论:但是 BundleConfig 中的默认代码与您想要的相同。
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
Run Code Online (Sandbox Code Playgroud)
或者您没有机会删除除最新版本之外的其他版本?
| 归档时间: |
|
| 查看次数: |
6295 次 |
| 最近记录: |