MVC 4 bundle为jquery使用{version}不渲染



我快疯了。我有一个bundle

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

在Scripts文件夹

  • jquery-1.9.1.js
  • jquery-1.9.1.min.js
  • jquery-1.9.1.min.map

和布局页中有以下内容:

    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/jqueryui")
    @Scripts.Render("~/bundles/jqueryval")

当我在调试或发布构建中运行时,它不会拾取jquery。我从调试器进入代码,当为jquery创建bundle时,它不包含任何内容。有人知道为什么{version}通配符没有选择jquery吗?如有任何帮助,不胜感激。

为我解决了这个问题是移动@Scripts.Render("~/bundles/jquery")语句从_Layout的底部。CSHTML到顶部。默认情况下,Microsoft将此渲染语句置于页脚下方。我将它与@Scripts.Render("~/bundles/modernizr")一起移到部分中,然后将脚本移到索引中。CSHTML开始工作。

所以很明显的问题是,当我的脚本内索引。cshtml试图执行,JQuery还没有加载,因为它在页面的底部

在全局。你在装载你的包吗?

例如:

public class MvcApplication : System.Web.HttpApplication
{
        protected void Application_Start()
        {
            ....
            // Register Bundles
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
}

我有这个完全相同的问题,并找到了修复。我注意到,如果我使用jquery文件的版本号而不是{version}令牌,它可以很好地用于捆绑/缩小。问题是它没有替换{version}令牌,然后无法将jquery文件拉入包中。

看起来System.Web.Optimization dll负责转换bundle配置中的{version}令牌。我最终使用NuGet来更新这个dll。我也刚刚更新了所有MVC相关的dll,而我在它(剃刀,MVC,网页等)。在那之后它工作了。

你可以通过拆分构建和添加bundle到bundle配置的操作来查看这是否是你的问题。新建一个bundle对象。给它设一个断点。执行Include方法,然后在bundle配置上执行add方法以添加新bundle。当您进入bundle时,您可以在它执行Include方法后查看它的内部,以查看Item属性是否相应增加。当它是一个问题时,它不会对我递增。

此外,这里有一个很好的参考从MVC 4迁移到MVC 5。在更新NuGet包之后,我有一些工作要做,以便更新所有的程序集引用。

http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web-api-2

ASP。此方法不能在应用程序's启动前初始化阶段被调用

相关内容

最新更新