相关疑难解决方法(0)

如何指定显式ScriptBundle包含订单?

我正在尝试MVC4 System.Web.Optimization 1.0 ScriptBundle功能.

我有以下配置:

public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
        // shared scripts
        Bundle canvasScripts =
            new ScriptBundle(BundlePaths.CanvasScripts)
                .Include("~/Scripts/modernizr-*")
                .Include("~/Scripts/json2.js")
                .Include("~/Scripts/columnizer.js")
                .Include("~/Scripts/jquery.ui.message.min.js")
                .Include("~/Scripts/Shared/achievements.js")
                .Include("~/Scripts/Shared/canvas.js");
        bundles.Add(canvasScripts);
    }
}
Run Code Online (Sandbox Code Playgroud)

以及以下观点:

<script type="text/javascript" src="@Scripts.Url(BundlePaths.CanvasScripts)"></script>
Run Code Online (Sandbox Code Playgroud)

哪里BundlePaths.CanvasScripts"~/bundles/scripts/canvas".它呈现:

<script type="text/javascript" src="/bundles/scripts/canvas?v=UTH3XqH0UXWjJzi-gtX03eU183BJNpFNg8anioG14_41"></script>
Run Code Online (Sandbox Code Playgroud)

到目前为止一切都很好,除了~/Scripts/Shared/achievements.js是捆绑源中的第一个脚本.这取决于它之前包含的每个脚本ScriptBundle.我如何确保它遵守我向包中添加include语句的顺序?

更新

这是一个相对较新的ASP.NET MVC 4应用程序,但它引用了优化框架预发布包.我删除了它并从http://nuget.org/packages/Microsoft.AspNet.Web.Optimization添加了RTM包.使用web.config中带有debug = true的RTM版本,@Scripts.Render("~/bundles/scripts/canvas")以正确的顺序呈现各个脚本标记.

在web.config中使用debug = false,组合脚本首先使用achievement.js脚本,但由于它是稍后调用的函数定义(对象构造函数),因此它运行时没有错误.也许minifier足够聪明,可以找出依赖关系?

我还尝试了IBundleOrdererDarin Dimitrov在RTM中使用两种调试选项建议的实现,并且它的行为相同.

所以缩小版本不是我期望的顺序,但它的工作原理.

asp.net-mvc bundle asp.net-mvc-4 asp.net-optimization

91
推荐指数
5
解决办法
6万
查看次数

CDN路径在MVC中的js捆绑中不起作用

我正在研究ASP.NET MVC4.客户端需要从捆绑的其他域(如CDN)加载所有javascripts和css.我使用过System.Web.Optimization.

下面是代码.

 var bundle = new ScriptBundle("~/bundles/scripts/");
bundle.Orderer = new AsIsBundleOrderer();
bundle.EnableFileExtensionReplacements = false;
bundle.CdnPath = "http://js.cusomdomainname.com";
bundle.Include("~/Scripts/jquery-1.7.1.min.js",
                "~/Scripts/jquery.unobtrusive-ajax.min.js",
                "~/Scripts/jquery.validate.min.js",
                "~/Scripts/jquery.validate.unobtrusive.min.js");

BundleTable.Bundles.UseCdn = true;
BundleTable.EnableOptimizations = true;
BundleTable.Bundles.Add(bundle);
BundleTable.Bundles.IgnoreList.Clear();
Run Code Online (Sandbox Code Playgroud)

在视图上

@Scripts.Render("~/bundles/scripts/")
Run Code Online (Sandbox Code Playgroud)

但它不是从另一个域渲染.

可能是什么问题呢?

c# asp.net-mvc cdn asp.net-mvc-4 bundling-and-minification

4
推荐指数
1
解决办法
6426
查看次数