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 を使用する場合、クエリ文字列データを使用して、ハンドラーが「応答しているオブジェクトの種類」と「どのデータが応答しているか」を知るのに十分な情報を提供します。そのオブジェクトは要求していますか?」
それが役立つことを願っています。