コンテキストを継承する=カウンタは作れるか?
Webページにカウンタが作れるだろうか?
以下のコードを実行しても count は増えていかず1のままである。(Class - End Classの内側だけコピペすること)
Partial Class Default1 Inherits System.Web.UI.Page Dim x Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Label1.Text = "カウント" & x x = x + 1 End Sub End Class
これはWebページは、直前の状態を保持しない, つまりページをアクセスする毎に初期状態から開始するからである。なぜだろうか?
Webサーバは世界中のブラウザと接続しておりWebのアクセスは「匿名」のアクセスだ。だから、webサーバからみてwebページの表示は毎回匿名の利用者からのアクセスであり、ある利用者の少し前の状態を保持することができない。
これを専門的な言葉では、「webページはコンテキストを保持しない」と言う。
しかし、webページの中には直前の状態を記憶しているように思えるwebページもある。それはどのように実現するのだろうか。
HiddenFieldを使うのが一つの方法である。
HiddenFieldを使う
Default.aspx に5行ほど改行をいれ、
ツールボックスから Button, Label, HiddenField を配置する。
プログラム例
Partial Class Default2 Inherits System.Web.UI.Page Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim x If (HiddenField1.Value = "") Then x = 0 Else x = Val(HiddenField1.Value) End If Label1.Text = "カウント" & x x = x + 1 HiddenField1.Value = x End Sub End Class
Webサイトを起動し、Button をクリックすると, カウントが1ずつ増加していく。