2009-02-24 3 views

ответ

4

Ну у вас есть пара вариантов

  1. Вы можете реорганизовать код в вашем ASHx быть в общей библиотеке, так что вы можете получить доступ к методам непосредственно и поэтому может обработчик.
  2. Вы можете создать экземпляр обработчика и вызвать членов, если они не являются частными.
  3. Вы можете создать web-запрос для обработчика и обработать ответ.

Это всего лишь несколько простых способов.

Мне лично нравится первый метод, потому что он способствует повторному использованию кода, но в зависимости от сценария вы можете делать то, что вам нравится.

Редактировать, чтобы отвечать всем вопросам.

По существу Да ... Вместо того, чтобы иметь кучу кода в вашем обработчике, вы делаете класс, называемый что-то значимым для вас контекстуально. Внутри этого класса вы помещаете логику, которая была в вашем обработчике. Затем из вашего обработчика вы можете создать экземпляр или вызвать статическую версию класса (в зависимости от того, как вы его реализовали), передавая ему объект HttpContext или все, что требуется для правильной работы этой логики. Сделайте то же самое на своей странице ASPX. Теперь вы можете вызвать объект, который содержит логику из любого места вашего приложения, вместо того, чтобы оставаться в обработчике.

EX:

Public Class MyCommonLogic 
    Public Shared Function ReturnSomethingCommon(context As HttpContext) As String 
     Return "Hello World!" 
    End Function 
End Class 

Тогда из обработчика или страницы ASPX ..

Dim something As String = MyCommonLogic.ReturnSomethingCommon(...) 

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

Изменен код VB извините за это.

+0

Мне нравится идея 1, но я не уверен, что это значит, я делаю новый класс, который имеет весь код, а затем в ASHx вместо имея код, я просто создаю новый экземпляр класса, который я сделал, и передаю значения функциям этого объекта? – BigOmega

+0

Я расскажу о редактировании. –

1

Если ASHX находится на одном и том же сервере, особенно если он находится в одном и том же веб-приложении, вы должны реорганизовать свою логику из ashx в общий класс, который могут вызвать как aspx, так и ashx.

В противном случае вы можете посмотреть на использование: System.Net.WebClient

Смежные вопросы