コンテキストを継承する=カウンタは作れるか?

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ずつ増加していく。