2013-02-19 18 views
9

Viele Code, den ich gesehen habe Referenz:ASP.Net MVC 4 Bundles

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

Das ist sehr gut, und es funktioniert ... wenn "etwas" enthalten ist. Muss ich einen Verweis hinzufügen, um diese zu bekommen? Verwenden Sie NuGet? Eine DLL kopieren? Woher kommt das?

Wenn ich mein Projekt ausführen, bekomme ich eine 404 für diese Ressource.

Antwort

11

Sie müssen das Bündel erstellen. Dies wird häufig in der Datei App_Start\BundleConfig.cs in Ihrem ASP.NET MVC 4-Projekt getan. Es ist alles in Bundling and Minification erklärt.

In der BundleConfig Klasse benötigen Sie so etwas wie dieses (diese Methode in Application_Start ausgeführt werden soll):

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 ... 
} 

Die Javascript-Quelldateien sollten vor dem Scripts Ordner. Das oben verlinkte Tutorial erklärt, wie verkleinerte Versionen im Release-Build usw. gebündelt werden.

+0

Erwähnenswert ist, dass ein Verweis auf 'System.Web.Optimization' direkt nach dem Erstellen der Klasse in' BundleConfig.cs' hinzugefügt werden sollte. – Dayan

0

In Ihrem Projekt ist App_Start/BundleConfig.cs die Deklaration für alle Bundles. Bedenken Sie:

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

In diesem Fall, wenn Sie „~/Bundles/jqueryval“ Referenz wird es die 2 aufgeführten Skripte für Sie enthalten, und als Bonus, wird es minify sie (wenn Sie Ihr Projekt laufen in "Release" -Modus).

Werfen Sie einen Blick auf this für weitere Details.

7

Ja, Sie müssen die Pakete in Ihrer Anwendung registrieren.

Global.asax.cs:

 protected void Application_Start() { 

     AreaRegistration.RegisterAllAreas(); 

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

BundleConfig.cs: So

 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" 
         ));    
     } 

wenn Sie diesen Code in Ihre Ansicht setzen:

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

Es wird 4 Javascript machen Dateien.

Mehr: Bundling and Minification

9

FYI - Ich habe Bundles in MVC mit vielen Beispielen gesehen, aber die meisten vernachlässigt zu erwähnen, dass die Baugruppen für diese in System.Web.Optimization.dll sind und Sie können dies von NuGet erhalten durch Hinzufügen der Microsoft ASP.NET Web Optimization Framework Paket.

+1

Neu erstellte MVC 4-Anwendungen enthalten bereits einen Verweis auf System.Web.Optimization.dll. –

0
  1. Wechseln Sie zum Ordner App_Start.
  2. Opoen BundleConfig.cs
  3. Überprüfen Sie innerhalb der RegisterBundles-Methode, ob Sie Folgendes haben.
 

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

Bitte nicht, dass innerhalb der Methode wird, ist sie auch für die Dateien in Ihrem Projekt.