2011-09-21 16 views
10

Estoy intentando utilizar SquishIt para minifying CSS y Javascript, en 3 proyecto ASP.NET MVC.usando SquishIt en ASP.NET MVC 3

Cuando utilizo método Render:

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

css se genera con números aleatorios en lugar de #, pero no se genera un enlace a archivo css y tengo que insertar manualmente a cshtml archivo:

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

pero yo no conozco a este número al azar, añade al nombre del archivo.

Sin # funciona bien.

Pero tengo la impresión de que Render debe generar automáticamente enlace de CSS de acuerdo a este artículo:

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

Estoy en lo correcto?

+1

nota al margen, ¿puedo recomendar el uso de un combinador/minificador de tiempo de diseño en lugar de uno de tiempo de ejecución? Esto le permitirá cargar los archivos ya minificados y combinados, y así eliminar la necesidad de que el servidor lo haga al solicitar la página. Le recomiendo [tag: Chirpy] * ... y no, no estoy afiliado con el proyecto de ninguna manera ... sólo un gran fan * –

+0

Por esta Podría usar http://ajaxmin.codeplex.com/ , pero fue un requisito para hacerlo en tiempo de ejecución. Gracias de cualquier manera. – Alexan

+0

sí no se preocupe, sólo una alternativa ... En lo personal creo que es un requisito ** ** ridícula añadir carga del servidor innecesaria, pero bueno, eso es sólo conmigo. –

Respuesta

20

las siguientes obras grandes por mí:

@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") 
) 

emite:

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

y cuando navego a la URL correspondiente se obtuvo el recurso aplastado y combinado correcta.

También hay un Contrib project que proporciona una página base Razor para integrar SquishIt en una aplicación ASP.NET MVC.

+0

Sí, funciona, gracias. – Alexan

+0

Felicitaciones a ti y a David ... ¡ambas soluciones funcionan muy bien! Esto me estaba volviendo loco. – PJH

13

O añadir una referencia al ensamblado SquishIt.Mvc y utilizar el método .MvcRender

por ejemplo.

@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

No pude encontrar en ninguna parte un ejemplo simple como este ... ¡gracias! –

+0

Sí, excelente respuesta. Gracias por el claro ejemplo. –

+0

¡Funciona muy bien! esto me estaba volviendo loco – PJH