Пользовательские HttpHandlers и различные типы обработчиков

StackOverflow https://stackoverflow.com/questions/665462

  •  21-08-2019
  •  | 
  •  

Вопрос

Вся литература, которую я вижу по созданию пользовательских обработчиков, посвящена связыванию расширения с обработчиком, напримересли бы мне нужен был обработчик для Ajax-запросов, я мог бы реализовать интерфейс IHttpHandler в классе AjaxHandler.

Теперь, чтобы иметь отдельные экземпляры AjaxHandlers, напримерDocAjaxHander, PersonAjaxHandler и т.д.как бы я мог получить базовую обработку AJAX моего класса AjaxHandler без регистрации каждой отдельной страницы * .ajax?

Это было полезно?

Решение

Похоже, вы предполагаете, что 1 HttpHandler = 1 страница или 1 элемент управления, но, как я понимаю, 1 HttpHandler может обрабатывать все страницы определенного расширения файла.

Ваш вопрос не очень ясен, и ваш ответ другому ответчику не имеет смысла...

"На самом деле, мне показалось, что это очень похоже на то, что я запрашивал Http-обработчики, используя в качестве примера обработчик .ajax".

Но я предполагаю, что вы думаете, что "DocAjaxHander" и "PersonAjaxHandler" должны быть созданы каждый для "DocAjaxControl" и "PersonAjaxControl" соответственно.Я не думаю, что это было бы необходимо, 1 обработчик должен быть в состоянии обрабатывать все ваши ajax-запросы, если вы решите сделать это таким образом, но мне кажется, что это не самое интуитивное решение для меня (с использованием HttpHandlers), во всяком случае, в деталях...

каждый объект IHttpHandler должен реализовать :

public void ProcessRequest(HttpContext context)

который позволяет :

context.Response.Write("Your JSON Response in here");

но на уровне 'ProcessRequest()' у вас нет доступа к экземпляру элемента управления, который создал вызов ajax, или к объекту 'System.Web.UI.Page', который содержит элемент управления, или к чему-либо еще.

context.Request

спешим на помощь!С помощью объекта запроса выше вы можете читать строки запросов, сеансы, и вы можете определить путь к исходному HttpRequest (т.е.PersonAjaxObject может выполнить ajax-вызов 'myPersonobjPage.ajax' для своих JSON-данных, но расширение '.ajax' отправляет запрос в ваш пользовательский http-обработчик и его метод ProcessRequest.)

Если бы я был на вашем месте и собирался использовать HttpHandler для своих вызовов ajax, я бы использовал данные строки запроса, чтобы предоставить моему обработчику достаточно информации, чтобы знать, "на какой тип объекта я тоже отвечаю", а также "какие данные запрашивает этот объект".

Надеюсь, это поможет.

Другие советы

Вы можете автоматически обрабатывать AJAX-запрос несколькими способами.Вот как это сделать с помощью веб-сервиса:

http://www.asp.net/AJAX/Documentation/Live/Tutorials/ConsumingWebServicesWithAJAXTutorial.aspx

Ну, одним из способов сделать это было бы с помощью параметров строки запроса...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top