9

我见过的很多代码都引用了这个:

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

这很棒,而且它有效……如果包含“某物”。我是否必须添加参考才能获得这些?使用 NuGet?复制一个DLL?这是从哪里来的?

当我运行我的项目时,我得到了该资源的 404。

4

5 回答 5

11

您需要创建捆绑包。这通常在App_Start\BundleConfig.csASP.NET MVC 4 项目的文件中完成。这一切都在Bundling and Minification中进行了解释。

BundleConfig课堂上你需要这样的东西(这个方法应该在 中执行Application_Start):

public static void RegisterBundles(BundleCollection bundles) {
  bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
              "~/Scripts/jquery-{version}.js"));

  bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
              "~/Scripts/jquery.unobtrusive*",
              "~/Scripts/jquery.validate*"));

  // ... more registrations ...
}

javascript 源文件应该存在于该Scripts文件夹中。上面链接的教程解释了如何在发布版本等中捆绑缩小版本。

于 2013-02-19T02:41:48.170 回答
9

仅供参考 - 我已经看到了许多在 MVC 中使用 Bundles 的示例,但大多数人都忽略了提到它的程序集在 System.Web.Optimization.dll 中,您可以通过添加Microsoft ASP.NET Web 优化框架包从 NuGet 获得它.

于 2013-10-29T16:21:23.063 回答
7

是的,您必须在您的应用程序中注册捆绑包。

全球.asax.cs:

      protected void Application_Start() {

        AreaRegistration.RegisterAllAreas();

            // Register the bundles
            BundleConfig.RegisterBundles(BundleTable.Bundles);
      }

捆绑配置.cs:

     public class BundleConfig
     {
        // For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254725
        public static void RegisterBundles(BundleCollection bundles)
        {
            bundles.Add(new ScriptBundle("~bundles/jqueryval").Include(
                        "~/Scripts/jquery.unobtrusive*",
                        "~/Scripts/jquery.validate*",
                        "~/Scripts/jquery.livequery.js",
                        "~/Scripts/jquery.numeric.js"
                       ));               
        }

因此,当您将此代码放在视图中时:

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

它将呈现 4 个 javascript 文件。

更多:捆绑和缩小

于 2013-02-19T02:43:37.663 回答
0
  1. 转到 App_Start 文件夹。
  2. 打开 BundleConfig.cs
  3. 在 RegisterBundles 方法中,检查您是否有以下内容。

bundles.Add(new ScriptBundle("~bundles/jqueryval").Include("~/Scripts/jquery.min.js"));

请不要在 Include 方法中,它包含在您项目中的文件中。

于 2014-03-05T18:43:01.437 回答
0

在您的项目App_Start/BundleConfig.cs中是所有捆绑包的声明。考虑一下:

    bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
        "~/Scripts/jquery.unobtrusive*",
        "~/Scripts/jquery.validate*"));

在这种情况下,如果您引用“~/bundles/jqueryval”,它将为您包含列出的 2 个脚本,并且作为奖励,它将缩小它们(如果您在“发布”模式下运行您的项目)。

看看这个了解更多细节。

于 2013-02-19T02:43:10.803 回答