HttpHandler на файл в ASP.NET MVC - PullRequest
0 голосов
/ 26 марта 2011

У меня есть следующие настройки.У меня есть веб-приложение, и в .css этого приложения я определяю фоновое изображение, которое будет отображаться при наведении курсора на какой-либо элемент.

Я хочу сценарий или что-то в этом роде, которое находится на сервере, и когдак изображению обращаются, оно вызывает действие в приложении.К сожалению, я понятия не имею, с чего начать.

Я хочу знать, если да, и некоторые советы о том, как написать серверный компонент, который выполняет действие в веб-приложении на основе запроса файла css.

Я нахожусь в 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.Поэтому мне пришлось исправить это, установив для свойства RouteExistingFiles RouteCollection значение true.

Теперь я получаю правильные обращения к своим изображениям, но по какой-то причине Site.css, находящийся в папке Content, не используется для стилизации результирующего HTML.

Есть предложения?

Ответы [ 3 ]

1 голос
/ 26 марта 2011

Если вы сфокусировались на изображении в файле CSS, вы могли бы заставить скрипт обрабатывать обработку изображения, используемого в вашем файле CSS, но это не будет срабатывать каждый раз, когда посетитель наводит курсор на какой-либо элемент, не говоря уже о каждой загрузке новая страница из-за кэширования, если у вас нет строгих правил без кэширования в игре.

Если вас больше интересует каждый раз, когда кто-то наводит какой-либо элемент, вы можете просто вызвать запрос AJAX и перейти оттуда.

$('.some-element').hover(function(){ $.get("spy.aspx"); });
1 голос
/ 26 марта 2011

Добавьте HttpHandler в вашем machine.config или web.config, например, так:

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

Ваш глагол может быть "*" или "GET", установите путь, равный расположению вашего файла изображения насервер, и заполните переменные типа в соответствии с вашим пространством имен, классом и функцией-обработчиком.

Более подробное объяснение см .: http://www.15seconds.com/issue/020417.htm

1 голос
/ 26 марта 2011

Если вы используете asp.net, вы можете определить обработчик ashx, который передает изображение клиенту и выполняет любое действие, которое вы хотите.Вы можете прочитать больше здесь:

...