ASP.Net MVC 4 资源捆绑

9

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

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

这很好,而且它有效...如果“something”被包含进去。我是否需要添加引用来获取它们?使用NuGet?复制一个DLL?这是从哪里来的?

当我运行我的项目时,我会得到一个404的资源错误。

5个回答

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文件夹中。上面链接的教程解释了如何将缩小版本捆绑到发布版本中等。


值得一提的是,在创建类之后,应该在 BundleConfig.cs 中添加对 System.Web.Optimization 的引用。 - Dayan

9

提醒大家一下 - 我看到了很多有关在MVC中使用Bundles的例子,但是大多数都没有提到这需要引用System.Web.Optimization.dll程序集,并且你可以通过添加Microsoft ASP.NET Web Optimization Framework包来获取它。


1
新创建的MVC 4应用程序已经包含对System.Web.Optimization.dll的引用。 - Alan Fisher

7

是的,你必须在应用程序中注册bundles。

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文件。
更多信息:捆绑和缩小

0
前往 App_Start 文件夾。 打開 BundleConfig.cs。 在 RegisterBundles 方法內,檢查是否有以下內容。
bundles.Add(new ScriptBundle("~bundles/jqueryval").Include("~/Scripts/jquery.min.js"));
請注意,在 Include 方法內,它正在為您項目中的文件進行包含。

0
在你的项目中,App_Start/BundleConfig.cs 是所有捆绑声明的地方。 请考虑以下内容:
    bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
        "~/Scripts/jquery.unobtrusive*",
        "~/Scripts/jquery.validate*"));

在这种情况下,如果您引用“〜/bundles/jqueryval”,它将为您包含2个列出的脚本,并作为奖励,它将对它们进行缩小(如果您在“发布”模式下运行项目)。
请查看this以获取更多详细信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接