首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET MVC ScriptBundle:更改呈现的输出

ASP.NET MVC ScriptBundle:更改呈现的输出
EN

Stack Overflow用户
提问于 2018-02-26 15:34:35
回答 2查看 593关注 0票数 0

是否可以在ScriptBundle MVC中更改ASP.NET的呈现输出?当使用EnableOptimizations = false配置包时,包中包含的每个脚本的输出如下所示:

代码语言:javascript
复制
 <script src="~/Scripts/path/to/script"></script>

我想基于ScriptBundle更改这个“模板”(因为所有的包都可以)。有办法改变这种状况吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-26 16:05:51

看看下面的代码,它总是会给出新的文件。

代码语言:javascript
复制
using System.IO;
using System.Web;
using System.Web.Hosting;
using System.Web.Optimization;

namespace TestProj
{
    public class BundleConfig
    {
        public static void RegisterBundles(BundleCollection bundles)
        {
            bundles.Add(new ScriptBundle("~/bundles/common").Include("~/Scripts/CommonScripts.js").WithLastModifiedToken());

            BundleTable.EnableOptimizations = false;
        }
    }

    internal static class BundleExtensions
    {
        public static Bundle WithLastModifiedToken(this Bundle sb)
        {
            sb.Transforms.Add(new LastModifiedBundleTransform());
            return sb;
        }
        public class LastModifiedBundleTransform : IBundleTransform
        {
            public void Process(BundleContext context, BundleResponse response)
            {
                foreach (var file in response.Files)
                {
                    var lastWrite = File.GetLastWriteTime(HostingEnvironment.MapPath(file.IncludedVirtualPath)).Ticks.ToString();
                    file.IncludedVirtualPath = string.Concat(file.IncludedVirtualPath, "?v=", lastWrite);
                }
            }
        }
    }
}

输出将是

代码语言:javascript
复制
"/Scripts/CommonScripts.js?v=636180193140000000"

这里,我将文件的最后修改日期添加为查询参数。因此,每当文件更改时,浏览器将始终获取新文件。或者,您可以在查询参数中添加类似于“1.0.0”的版本,而不是上次更新的时间。

票数 1
EN

Stack Overflow用户

发布于 2018-02-26 16:08:17

我也与MVC捆绑斗争了很长时间。一开始很棒,但当你需要做任何不寻常的事情(比如你的问题)时,你就开始与它展开一场失败的战斗。

很抱歉,这没有直接回答你的问题,但我搬到WebPack是因为这样的问题,从来没有回头。

https://webpack.js.org

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48991907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档