2011-03-26 29 views
0

我有以下設置。我有一個Web應用程序,並且在這個應用程序的.css中,我定義了一個背景圖片,當我將鼠標懸停在某個元素上時將會呈現。ASP.NET MVC中的文件上的HttpHandler

我想一個腳本,或者那種坐在服務器上,當圖像被訪問,它調用的應用程序的動作的東西。不幸的是,我不知道從哪裏開始。

我想知道是否和如何編寫,其基於由一個CSS文件的請求的Web應用程序的操作的服務器端組件的一些提示。

我在Windows7中,ASP.NET MVC。

編輯

所以,我按照使用HttpHandlers的您的建議。這似乎是完美的解決方案。但是,我遇到了問題。

我跟了這非常有幫助的鏈接http://www.phpvs.net/2009/08/06/aspnet-mvc-how-to-route-to-images-or-other-file-types/,但我只是無法得到一擊路線

routes.Add("ImageRouting", new Route("Content/themes/base/images/{filename}.png", new ImageRouteHandler())); 

我唯一的另一個途徑是通過MVC模板默認生成的一個上。

所以我想通了,請求到一個文件不被MVC默認處理。所以我必須通過將RouteCollectionRouteExistingFiles屬性設置爲true來解決這個問題。

現在我得到適當的命中對我的圖像,但由於某種原因,Site.css位於Content文件夾不用於樣式生成的HTML。

有什麼建議嗎?

+1

你的意思是「當圖像被訪問」當客戶端請求?那會打破例如如果瀏覽器預先加載資源。你想達到什麼目標,操作系統和網絡服務器在你身上? – 2011-03-26 09:52:37

回答

1

在你的machine.config或web.config中添加一個HttpHandler,像這樣:

<httpHandlers> 
    <add verb="supported http verbs" path="path" type="namespace.classname, assemblyname" /> 
<httpHandlers> 

你的動詞可以是「*」或「GET」,設置路徑等於圖像的位置文件放在服務器上,並根據你的命名空間,類和處理函數填充類型變量。

如需更詳細的說明,請參閱: http://www.15seconds.com/issue/020417.htm

1

如果你的重點是在CSS文件中的圖像,你可以做一個腳本處理圖像所使用的服務在你的CSS文件中,但每當訪問者懸停在某個元素上時都不會觸發它,更不用說每次由於緩存而加載新頁面時,除非你有嚴格的禁止緩存規則。

如果你更感興趣的是每個人徘徊一些元素的時候,你可能只是觸發一個AJAX請求,並從那裏走。

$('.some-element').hover(function(){ $.get("spy.aspx"); }); 
+0

我只對css感興趣,但感謝關於緩存的有用提示。 – Trimack 2011-03-26 10:27:45