4

这真让我抓狂。我有一个包

            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 创建包时,它不包含任何内容。有谁知道为什么 {version} 通配符没有选择 jquery?非常感谢任何帮助。

4

3 回答 3

5

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

很明显,问题是当我在 index.cshtml 中的脚本尝试执行时,JQuery 尚未加载,因为它位于页面底部。

于 2013-07-31T15:47:44.047 回答
0

你在 Global.asax 中加载你的包吗?

例如:

public class MvcApplication : System.Web.HttpApplication
{
        protected void Application_Start()
        {
            ....

            // Register Bundles
            BundleConfig.RegisterBundles(BundleTable.Bundles);

        }
}
于 2013-06-07T21:39:14.003 回答
0

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

看起来 System.Web.Optimization dll 负责转换捆绑配置中的 {version} 令牌。我最终使用 NuGet 来更新这个 dll。我还刚刚更新了所有与 MVC 相关的 dll(Razor、MVC、网页等)。之后它起作用了。

您可以通过拆分构建和添加捆绑包到捆绑包配置的操作来查看这是否是您的问题。新建一个捆绑对象。在上面设置一个断点。执行 Include 方法,然后在 bundle config 上执行 add 方法以添加新的 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.NET:在应用程序的预启动初始化阶段不能调用此方法

于 2013-10-23T22:30:20.523 回答