0

カスタム ハンドラーの作成に関して私が目にするすべての文献は、拡張機能とハンドラーの関連付けを扱っています。たとえば、Ajax 要求のハンドラーが必要な場合は、IHttpHandler インターフェイスを AjaxHandler クラスに実装できます。

ここで、DocAjaxHander、PersonAjaxHandler などの AjaxHandlers の個々のインスタンスを作成するには、個々の *.ajax ページを登録せずに、AjaxHandler クラスの基本 AJAX 処理をどのように派生させるのでしょうか?

4

3 に答える 3

0

AJAXリクエストはさまざまな方法で自動的に処理できます。Webサービスでそれを行う方法は次のとおりです。

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

于 2009-03-20T09:38:57.467 に答える
0

それを行う1つの方法は、クエリ文字列パラメータを使用することです...

于 2009-06-04T22:16:11.350 に答える
0

1 HttpHandler = 1 ページまたは 1 コントロールと仮定しているように聞こえますが、私が理解しているように、1 HttpHandler は特定のファイル拡張子のすべてのページを処理できます。

あなたの質問はあまり明確ではなく、別の回答者への回答は意味がありません...

「実際、例として .ajax ハンドラーを使用して、Http ハンドラーに質問しているように思えました。」

しかし、「DocAjaxControl」と「PersonAjaxControl」に対してそれぞれ「DocAjaxHander」と「PersonAjaxHandler」を作成する必要があると考えていると仮定します。私はそれが必要だとは思いません.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

救助へ!上記の Request オブジェクトを使用すると、QueryStrings、Sessions を読み取ることができ、元の HttpRequest のパスを特定できます (つまり、PersonAjaxObject は、その JSON データに対して「myPersonobjPage.ajax」への ajax 呼び出しを行うことができますが、「.ajax」拡張子は、カスタム http ハンドラーでリクエストし、それが ProcessRequest メソッドです。)

私があなたで、ajax 呼び出しに HttpHandler を使用する場合、クエリ文字列データを使用して、ハンドラーが「応答しているオブジェクトの種類」と「どのデータが応答しているか」を知るのに十分な情報を提供します。そのオブジェクトは要求していますか?」

それが役立つことを願っています。

于 2011-08-25T13:35:57.213 に答える