2011-09-21 113 views
10

我試圖在ASP.NET MVC 3項目中使用SquishIt來縮小CSS和Javascripts。在ASP.NET MVC 3中使用SquishIt 3

當我使用Render方法:

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

CSS是用隨機數代替#產生的,但不產生鏈接的CSS文件,我需要手動將其插入到CSHTML文件:

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

但我不知道這個隨機數,加到文件名中。

沒有#它工作正常。

但我印象中,渲染依照本條應自動生成CSS鏈接:

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

,對嗎?

+1

注意,我可以推薦使用設計時組合器/縮小器而不是運行時組件嗎?這將允許您上傳已縮小和合並的文件,從而消除服務器在頁面請求時執行此操作的需要。我強烈建議[標籤:Chirpy] ... *和不,我不以任何方式隸屬於該項目......只是一個巨大的粉絲* –

+0

爲此,我可以使用http://ajaxmin.codeplex.com/ ,但它需要在運行時進行。不管怎麼說,還是要謝謝你。 – Alexan

+0

是的沒有擔心,只是一個替代...我個人認爲這是一個荒謬的**要求**添加不必要的服務器負載,但嘿,這只是我。 –

回答

20

以下爲我的偉大工程:

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

它發出:

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

,當我瀏覽到對應的URL獲得正確的壓扁和組合資源。

還有一個Contrib project它提供了一個基本的Razor頁面來將SquishIt集成到ASP.NET MVC應用程序中。

+0

是的,它的工作原理,謝謝。 – Alexan

+0

給你和David的榮譽......兩種解決方案都很棒!這讓我瘋狂。 – PJH

13

或添加SquishIt.Mvc集的引用,並使用.MvcRender方法

例如。

@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

無法找到像這樣的簡單示例的任何地方......謝謝! –

+0

是的,很好的答案。感謝這個明確的例子。 –

+0

工程太棒了!這讓我瘋狂 – PJH