ポストバックとは?
前回のページでは、ASP.NET を使うと簡単にイベント処理ができることがわかりました。
ここでは、先へ進む前にひとつ重要な言葉を説明します。その重要な言葉とは ポストバック (Postback) です。
前回作成したページをもう一度みてみます。
<%@ Page Language="C#" %> <html> <script runat="server"> protected void button1_OnClick(object sender, EventArgs e){ label1.Text = textbox1.Text; } </script> <body><form runat="server"><p> <asp:TextBox runat="server" id="textbox1"/> <asp:Button runat="server" id="button1" Text="OK" OnClick="button1_OnClick"/><br> <asp:Label runat="server" id="label1" BackColor="#aaaaaa" Width="150px"/> </p> </form> </body> </html>
この中の form タグに注目します。
ボタンをクリックしたときに、サーバー側の処理が走るのはフォームデータをサーバー側に送信しているからです。 その送信先を指定するのは、通常の HTML の書き方でいえば form タグの action 属性であり、送信方法は method 属性ですよね。
例えば、次のように書いたら・・・
<form action="foo.cgi" method="post">
foo.cgi に対して POST で、フォームデータを送信しますよね。
しかし、ASP.NET では form runat="server" とだけ指定します。これによって実行時に、次のような HTML タグに展開されます。
<form method="post" action="textbox.aspx" id="ctl00">
ここで textbox.aspx という名前はこのページそのもののファイル名です。もしファイル名を foo.aspx として作ればここには foo.aspx となります。(ご自身で確認してみてください) また method は POST が指定されています。
このように、ASP.NET の Web フォームは通常同じページに対して、POST し返します。 こうすることで、フォーム内のデータをサーバー側で処理できるようになります。
従って、上の例ではボタンを押したときには、同じページ (ここでは textbox.aspx) に対して POST して、 サーバー側で実行するように指定された部分 (ここでは button1_OnClick 関数) がサーバー側で処理されて、 Web ページが再生成されます。
このように、イベント処理時にその裏側で必要に応じてサーバー側へデータをポストすることがあります。 この動きを ASP.NET では "ポストバック" (Postback) といいます。
ポストバックは ASP.NET を理解するうえで非常に重要な仕組みなので覚えておいてください。
ASP.NET を使ったことがなくて、他の Web テクノロジーを知っている人は、POST は知ってるけど、 POST "バック" って何だ?と思ったかもしれませんが、これはこういうことなのです。