ASP.NET はステートレスです。つまり、ページがリクエストされるたびに、サーバーは実際にページ全体とそのコントロールと状態を構築し、リクエストに応答します。次に、要求への応答として適切な HTML マークアップをレンダリングします。
どのコントロールでも、autopostback プロパティが true に設定されている場合、コントロールがポストバックを引き起こす場合 (リンク ボタンのクリックなど)、ページはサーバーにポストバックされます。
ASP.NET はどのようにページをポストバックしますか? これは、_doPostBack() と呼ばれる JavaScript 関数を使用して行われます。機能は -
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
この関数は、フォームをサーバーに送信するために使用されます。_doPostBack は、隠し変数 __EVENTTARGET および __EVENTARGUMENT を使用して、引数 (イベント ターゲットおよびイベント引数) を受け入れます。これにより、ポストバックの原因となったコントロールがサーバーに通知され、適切な引数がサーバーに渡されます。
aspx ページにこのコードがある場合 -
<asp:LinkButton ID="lnkButton" runat="server">LinkButton</asp:LinkButton>
対応する生成されたマークアップは -
<a id="LinkButton1" href="javascript:__doPostBack('lnkButton','')">LinkButton</a>
たとえば、リンク ボタンをクリックすると、そのページは __doPostBack() 関数によってポストバックされます。次に、ページ上のそれぞれのコントロール状態を使用して、サーバーでページが再作成されます。ページ上の各コントロールの状態を取得するには、viewstate などのメカニズムが使用されます。ページが読み込まれると、サーバーは応答マークアップを計算してレンダリングします。