6

我想做以下事情:

    @Scripts.Render("~/bundles/jquery?version=1"])

版本值必须是动态的,并且应该与 cookie 中定义的值相匹配。

如何将此参数添加到 Scripts.Render ?

我用 jQuery 尝试过类似的方法,但没有运气:

 @Scripts.Render("~/bundles/jquery?version=" +  $.cookie('version'))
4

4 回答 4

8

代替

@Scripts.Render("~/bundles/jquery?version=1"])

@{string version = 1}

@Scripts.RenderFormat("<script type=\"text/javascript\" src=\"{0}?nocache="+ version +"\"></script>", "~/bundles/jquery")

如这篇文章所示: http: //www.jomendez.com/2016/05/26/how-to-avoid-js-files-cache-script-bundle-with-razor/

于 2018-05-30T22:34:58.513 回答
4

默认情况下,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;
}

有关完整的详细信息,请参阅 http://www.asp.net/mvc/overview/performance/bundling-and-minification,特别是“控制捆绑和缩小”和“捆绑缓存”部分。

于 2016-01-14T15:15:37.240 回答
0

据我所知,@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"));
}

您可以在您的视图中调用必要的版本:

@Scripts.Render("~/bundles/jquery-ver191")

或者

@Scripts.Render("~/bundles/jquery-ver202")

已编辑:根据您的评论:但是 BundleConfig 中的默认代码与您想要的相同。

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

或者您没有机会删除除最新版本之外的其他版本?

于 2013-08-06T19:49:38.000 回答
0

创建一个 mvc 帮助程序来更改生成的 html 并添加版本。以下示例在生成单个文件或多个文件(调试模式)时有效。

public static HtmlString GetScriptsWithVersion()
{
    const string VERSION = "2.0.1"; //or get the version where you want
    const string SCRIPT_END = "\"></script>";
    string html = Scripts.Render("~/bundles/ui").ToString();
    string versionParam = "?v=" + VERSION 
    html = html.Replace(SCRIPT_END, versionParam + SCRIPT_END);
    return new HtmlString(html);
}
于 2018-01-22T04:56:01.777 回答