asp.net-mvc - Debug模式下的 ASP.NET 4.5 捆绑 - 陈旧资源

标签 asp.net-mvc asp.net-4.5 asp.net-optimization bundling-and-minification

有什么方法可以让 ASP.NET 4.5 Bundling 功能在 中运行时生成 GUID 作为查询字符串的一部分调试 模式(例如捆绑关闭)。

问题是在本地开发时,脚本/CSS文件是这样生成的:

<script type="text/javascript" src="/Content/Scripts/myscript.js" />

因此,如果我更改该文件,我需要进行硬刷新(有时几次)以使浏览器接收该文件 - 烦人。

有什么办法可以让它像这样渲染:
<script type="text/javascript" src="/Content/Scripts/myscript.js?v=x" />

哪里x是一个 GUID(例如总是唯一的)。

想法?

我在 ASP.NET MVC 4 上。

最佳答案

在按照上面的其他答案修补 NuGet 包之前,现在我最终使用了与测试版 NuGet 包相同的包装器代码:

private static IHtmlString JsUnbundled(this HtmlHelper htmlHelper, string bundlePath)
{
    var jsBuilder = new StringBuilder();
    foreach (var file in BundleResolver.Current.GetBundleContents(bundlePath))
    {
        var tagBuilder = new TagBuilder("script");
        tagBuilder.Attributes["src"] = file.AddCacheKey(); // add GUID
        tagBuilder.Attributes["type"] = "text/javascript";
        jsBuilder.AppendLine(tagBuilder.ToString());
    }
    return MvcHtmlString.Create(jsBuilder.ToString());
}

然后我有另一个 HTML 助手检查是否调试,然后使用上面的 - 否则使用 Scripts.Render .

显然,这不会对文件进行任何类型的哈希处理 - 它始终会请求文件。但我不介意这一点,因为它仅用于调试。

关于asp.net-mvc - Debug模式下的 ASP.NET 4.5 捆绑 - 陈旧资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13131381/

相关文章:

asp.net-mvc - ASP.NET MVC 3 TextArea 默认内容

javascript - 使用ajax从 Controller 更改标签?

asp.net - Web 表单的 typescript

c# - 存储过程在 SSMS 中运行良好,但在 C# 中调用时没有返回任何行

asp.net - 如何在asp.net webforms捆绑中将CDN添加到bundle.config

c# - 何时在 MVC4 中使用包

asp.net-mvc - 如何将包含动态内容的 bundle 添加到 asp.net 网络优化

c# - 我可以在使用自动映射器映射时在对象列表中添加行号吗?

javascript - 如何从 foreach 循环中获取选中复选框的 ID

c# - 从 id 属性获取 xml 节点值 C#