2011-08-12 50 views
0

我正在使用Asp Sprite和圖像優化框架here來處理我網站中的任何CSS sprite。根據布勞爾框架生成指向這兩個文件捕獲MVC中的CSS路由

/App_Sprites/highCompat.css - ie9, firefox, chrome 

    /App_Sprites/lowCompat.css - ie6, ie7 

不幸的是,CSS文件不精縮兩個不同的環節,不能從他們目前的位置移動。

我有我自己的縮小引擎,雖然環繞着Ajaxmin庫,我使用一個處理程序來動態地壓縮壓縮的CSS。

這將捕獲這樣的路徑。

/css.axd?path=reset.css|style.css|helpers.css

我怎麼能與MVC捕捉請求,並改寫它,因此CSS是通過我的minifier服務?

乾杯!

回答

2

很簡單,真的:將CSS放在標記點中URI以外的地方。

如果物理文件存在,IIS將不會運行路由處理程序。因此,如果您的網站有一個物理~/App_Sprites/highCompat.css文件,您的應用將無法攔截它(儘管您可以使用對HttpModule執行此操作)。但是如果你把這個文件放在其他地方並且有一個App_SpritesController,那麼你可以像往常一樣在MVC中處理事情。

因此,要麼寫一個HttpModule(這可能是我的選擇),或者,如果你必須通過MVC做到這一點,重新定位文件。

+0

移動文件的問題是路徑是基於觀察瀏覽器動態生成的。對於ie9,firefox等的highCompat以及對於ie6,ie7的lowCompat。我已更新我的問題以澄清這一點。 –

+0

這根本不是問題。該文件夾似乎總是相同的。所以只需重寫[HandleUnknownAction](http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.handleunknownact​​ion.aspx)。 'actionName'參數將是文件名。 –

+0

啊......我想我已經開始看到光明瞭。谷歌似乎表示,我應該仔細考慮如何實現這一點。你有任何代碼示例? –