2013-02-19 23 views
9

sacco di codice che ho visto questo riferimento:ASP.NET MVC 4 Bundles

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

Che è grande, e funziona ... se "qualcosa" è incluso. Devo aggiungere un riferimento per ottenere questi? Usa NuGet? Copia una DLL? Da dove viene questo?

Quando eseguo il mio progetto, ottengo un 404 per quella risorsa.

risposta

11

È necessario creare il pacchetto. Ciò viene spesso eseguito nel file App_Start\BundleConfig.cs nel progetto ASP.NET MVC 4. È tutto spiegato in Bundling and Minification.

Nella classe BundleConfig avete bisogno di qualcosa di simile (questo metodo dovrebbe eseguire in 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 ... 
} 

I file di origine Javascript should esiste nella cartella Scripts. Il tutorial sopra riportato spiega come le versioni minificate sono raggruppate nella versione di rilascio ecc.

+0

Vale la pena ricordare che un riferimento a 'System.Web.Optimization' dovrebbe essere aggiunto all'interno di' BundleConfig.cs' subito dopo aver creato la classe. – Dayan

0

Nel progetto App_Start/BundleConfig.cs è la dichiarazione per tutti i pacchetti. Considerate questo:

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

In questo caso, se si fa riferimento a "~/fasci/jqueryval" includerà i 2 script elencati per voi, e come bonus, li minify (se si esegue il progetto in Modalità "Release").

Date un'occhiata a this per ulteriori dettagli.

7

Sì, è necessario registrare i pacchetti nell'applicazione.

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

Quindi, quando si inserisce il codice nella visualizzazione:

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

Si renderà 4 javascript File.

Più: Bundling and Minification

9

CRONACA - Ho visto molti esempi di utilizzo di Bundles in MVC, ma la maggior parte trascura di menzionare che le assemblee di questo sono in System.Web.Optimization.dll e si può ottenere questo da NuGet aggiungendo il pacchetto Microsoft ASP.NET Web Optimization Framework.

+1

Le applicazioni MVC 4 appena create includono già un riferimento a System.Web.Optimization.dll. –

0
  1. Passare alla cartella App_Start.
  2. Opoen BundleConfig.cs
  3. All'interno del metodo RegisterBundles, verificare se si dispone di quanto segue.
 

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

prega di notare che all'interno del metodo Include, è anche per i file del progetto.