2011-03-26 33 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