13

私は、いくつかの異なるWebテクノロジースタックの経験豊富なWeb開発者です。私は現在.Netで働いており、パーシャルポストバックに興味を持っています。

パーシャルポストバックの機能とプログラムでの操作方法は理解していますが、理解していないテクノロジーを使用するのは好きではありません。パーシャルポストバックはどのように実装されていますか。

HTTPリクエストと非同期リクエストを理解しています。パーシャルポストバックについて私を悩ませているのは、両方のように見えることです。

何かが足りないだけかもしれませんが、部分リクエストは両方を実行し、最初に非同期POSTリクエストを起動しますが、ブラウザは認識しているようで、アクティビティインジケータが回転し始めます。これは通常、HTTPリクエストページでのみ発生します。与える。

では、MicrosoftがHTTPリクエストレベルでパーシャルポストバックをどのように実装したかについて、誰かが光を当てることができますか?

4

3 に答える 3

27

私はこの質問がすでに答えられていることを知っています、しかし私は答えに同意しません...

私の謙虚な意見では、「部分的なポストバック」という用語は、上記の記事「ASP.NET2.0で独自の部分的なポストバックを作成する方法」で誤用されています。この記事では、作成者がHttpHandlerに対してAJAX呼び出しを行う方法を示します。これは、ASP.NETでPartialPostback呼び出しを行うプロセスとは大きく異なります。

私は、この「違い」は、次のように述べている(上記の回答)後からのコメントでは理解されていないと信じています。

UpdatePanelは、含まれているコントロールを更新するだけでなく、処理後にサーバーから取得した値でViewState値を更新します。

この最後のコメントはややわかりにくいですが、ASP.NET UpdatePanelを使用した「部分的なポストバック」の定義を示しています...部分的なポストバックが何であるかについては説明していません(これもまた、通常のAJAX呼び出し)。

詳述する...


UpdatePanelを使用し
たMICROSOFTASP.NETAJAX:基本的なレベルでは、MicrosoftAJAXは部分ページポストバックを介した非同期要求をサポートします。部分的なポストバックは、同期的な全ページのポストバックと同じページライフサイクルを繰り返しますが、ページ上の特定の領域またはコントロールのみが更新されるため、部分的なページレンダリングが実現されます。MICROSOFT ASP.NET AJAXは、部分的なポストバックを生成および処理するためにインターセプターパターンに依存しています。初期化時に、MICROSOFT ASP.NET AJAX JavaScriptライブラリは、通常はフルページのポストバックを開始する呼び出しをインターセプトするためのクライアントイベントハンドラーのセットを追加します。ハンドラー関数は、登録されたコントロールからのポストバック呼び出しをインターセプトし、部分的なポストバックを生成し、応答コンテンツを処理してから、ページコンテンツを非同期的に更新します。 MICROSOFT ASP.NET AJAXは、既存のASP.NETポストバックアーキテクチャに基づいて構築されているため、イベント検証を利用し、部分的なポストバックプロセス全体でビューステートを維持します。あなたの標準的な「通常の」AJAX呼び出しはこれらのことをしません!

簡単に言えば...

MICROSOFT ASP.NET AJAXは、「通常の」AJAXを使用して「ページをajax-ify」し、部分的な更新を実現します。これにより、1回の呼び出しでビューステートを複数回交換および管理します。 これが「部分的ポストバック」と呼ばれる理由です。その後、これが、元々UpdatePanelをページを「 ajaxy 」にする手段として説明した理由でもあります(AJAXを使用するのと同じではないため)。


通常のAJAX呼び出し:
ブラウザーでJavaScriptを使用して開始された非同期リクエストは、サーバーへの新しい接続を作成します。はい...これには、ページへのステートフルポストバックだけでなく、現在のページ以外のリソースへのステートレスリクエストも含まれる場合があります。 ただし、非同期ポストバックの場合、サーバー上の現在のページで処理する必要のある情報のみが要求に渡されます(これを制御できます)。 つまり、ページ全体のコンテンツを送信する必要はなく、ビューステートを管理する必要もありません。また、ページのライフサイクルに組み込まれている(ネイティブの)オーバーヘッドをバイパスできます。一方、非同期ポストバックは、CURRENTREQUESTの処理に関連するサーバーイベントのみを呼び出します。これが、通常のAJAXが部分的なポストバックよりもはるかに高速である理由です!

これらのポイントは説明します...

「部分的なポストバック」とは何かだけでなく、「部分的なポストバック」と「ajax」の呼び出しに違いがあるのはなぜですか。これがより良い答えである理由です。

于 2011-11-30T13:29:29.113 に答える
5

ASP.NET 2.0で独自の部分的なポストバックを作成する方法から:

部分的なポストバック構築の中心は、DOMAPIであるXMLHttpRequestです。JavaScriptなどのWebブラウザスクリプト言語内で使用して、ページ全体をリロードしたり、スクリプト言語内でサーバーからの応答を再度処理したりすることなく、HTTP要求をWebサーバーに直接送信できます。XML形式のこのデータは、クライアント側でページ要素を操作するために使用できます。

ASPXページのボタンをクリックすると、XMLHttpRequestAPIを使用してクライアント側のHTTPリクエストが作成されます。このリクエストは、ウェブサーバー上のHttpHandlerによって処理されます。HttpHandlerはリクエストを受信して​​処理し、ASPXページのXMLHttpオブジェクトにレスポンスを送り返します。次に、XMLHttpオブジェクトは応答を消費し、ブラウザーがページを完全に更新しなくても、適切なUIの変更をレンダリングします。

UpdatePanelは、含まれているコントロールを更新するだけでなく、処理後にサーバーから取得した値でViewState値を更新します。

于 2009-08-06T12:54:24.237 に答える
1

を見てみましょう:

http://www.codeproject.com/KB/aspnet/PartialPostback.aspx

于 2010-01-30T01:25:56.550 に答える