2011-09-21 27 views
10

Sto tentando di utilizzare SquishIt per la minificazione di CSS e Javascripts nel progetto ASP.NET MVC 3.utilizzando SquishIt in ASP.NET MVC 3

Quando uso metodo Render:

.Render("~/content/themes/base/combined_#.css"); 

css è generato con numero casuale al posto di #, ma link al file css non viene generato e ho bisogno di inserire manualmente per cshtml di file:

<link href="~/content/themes/base/combined_#.css" rel="stylesheet" type="text/css" /> 

ma non conosco questo numero casuale, aggiunto al nome del file.

Senza # funziona correttamente.

Ma ho impressione che Render dovrebbe generare automaticamente collegamento css in base a questo articolo:

http://www.codethinked.com/squishit-the-friendly-aspnet-javascript-and-css-squisher

Ho ragione?

+1

nota a margine, posso consigliare di utilizzare un combinatore/minificatore di progettazione piuttosto che uno di runtime? Questo ti permetterà di caricare i file già miniati e combinati, e quindi di rimuovere la necessità che il server lo faccia alla richiesta della pagina. Consiglio vivamente [tag: Chirpy] ... * e no, non sono affiliato al progetto in alcun modo ... solo un enorme fan * –

+0

Per questo potrei usare http://ajaxmin.codeplex.com/ , ma era necessario farlo in fase di esecuzione. Grazie comunque. – Alexan

+0

sì no worries, solo un'alternativa ... Personalmente penso che sia un ridicolo ** requisito ** aggiungere carico del server non necessario, ma hey, sono solo io. –

risposta

20

Il seguente funziona alla grande per me:

@Html.Raw(Bundle.JavaScript() 
     .Add("~/scripts/jquery-1.5.1.js") 
     .Add("~/scripts/jquery.unobtrusive-ajax.js") 
     .ForceRelease() 
     .Render("~/scripts/combined_#.js") 
) 

@Html.Raw(
    Bundle.Css() 
     .Add("~/content/site.css") 
     .Add("~/content/site2.css") 
     .ForceRelease() 
     .Render("~/content/combined_#.css") 
) 

emette:

<script type="text/javascript" src="/scripts/combined_B8A33BDE4B3C108D921DFA67034C4611.js"></script> 
<link rel="stylesheet" type="text/css" href="/content/combined_97A4455A9F39EE7491ECD741AB4887B5.css" /> 

e quando navigo al corrispondente URL si ottiene la risorsa schiacciata e combinato corretta.

C'è anche un Contrib project che fornisce una pagina Razor di base per integrare SquishIt in un'applicazione ASP.NET MVC.

+0

Sì, funziona, grazie. – Alexan

+0

Complimenti a te e David ... entrambe le soluzioni funzionano alla grande! Questo mi stava facendo impazzire. – PJH

13

O aggiungere un riferimento all'assembly SquishIt.Mvc e utilizzare il metodo .MvcRender

es.

@using SquishIt.Framework 
@using SquishIt.Mvc 

@(Bundle.JavaScript() 
    .Add("~/scripts/jquery-1.5.1.js") 
    .Add("~/scripts/jquery.unobtrusive-ajax.js") 
    .ForceRelease() 
    .MvcRender("~/scripts/combined_#.js") 
) 
+0

Non ho trovato da nessuna parte un semplice esempio come questo ... grazie! –

+0

Sì, ottima risposta. Grazie per il chiaro esempio. –

+0

Funziona alla grande! Questo mi stava facendo impazzire – PJH