ASP.Net MVC 4捆绑包

时间:2013-02-19 02:34:56

标签: jquery asp.net-mvc

我见过很多代码参考了这个:

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

哪个好,哪个有效...如果包含“内容”。我是否必须添加引用才能获得这些内容?使用NuGet?复制DLL?这是从哪里来的?

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

5 个答案:

答案 0 :(得分:11)

您需要创建捆绑包。这通常在ASP.NET MVC 4项目的App_Start\BundleConfig.cs文件中完成。这一切都在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文件夹中。上面链接的教程解释了如何在发布版本等中捆绑缩小版本。

答案 1 :(得分:9)

仅供参考 - 我已经看过很多在MVC中使用Bundles的例子,但是大多数人忽略了这个程序集在System.Web.Optimization.dll中你可以通过添加 Microsoft ASP从NuGet获得这个.NET Web Optimization Framework 包。

答案 2 :(得分:7)

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

Global.asax.cs:

      protected void Application_Start() {

        AreaRegistration.RegisterAllAreas();

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

BundleConfig.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文件。

更多:Bundling and Minification

答案 3 :(得分:0)

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

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

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

请查看 this 了解详情。

答案 4 :(得分:0)

  1. 转到App_Start文件夹。
  2. Opoen BundleConfig.cs
  3. 在RegisterBundles方法中,检查您是否有以下内容。
  4. 
    bundles.Add(new ScriptBundle("~bundles/jqueryval").Include("~/Scripts/jquery.min.js"));
    
    

    请注意,在Include方法中,它包含项目中的文件。