0

ASP.NET で最初の WebApplication を作成しようとしています。これが私のコードです:

Public Class WebForm2
Inherits System.Web.UI.Page
Public n As Integer
Public zetony As Integer
Public liczba As Boolean
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

End Sub
Private Function TextBox1_Validate(Cancel As Boolean)
    If Not IsNumeric(TextBox1.Text) Then
        MsgBox("Prosze podaj liczbe dobry uzytkowniku :)", vbInformation)
        Cancel = True
    Else : Cancel = False
    End If
    Return Cancel
End Function
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    liczba = TextBox1_Validate(liczba)
    If (liczba = False) Then
        n = Convert.ToInt32(TextBox1.Text)
        Label2.Text = n
    End If
End Sub
Protected Sub graj()
    Label2.Text = n
End Sub
Protected Sub Image1_Click(sender As Object, e As ImageClickEventArgs) Handles ImageButton1.Click
    If zetony < 2 Then
        n -= 1
        ImageButton1.ImageUrl = "red_coin.gif"
        zetony += 1
    End If
End Sub

Protected Sub Image2_Click(sender As Object, e As ImageClickEventArgs) Handles ImageButton2.Click
    If zetony < 2 Then
        n -= 1
        ImageButton2.ImageUrl = "red_coin.gif"
        zetony += 1
    End If
End Sub

Protected Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    graj()
End Sub
End Class

私の問題は、Button1_Click でのみ適切な値が得られたことです。Sub graj() を呼び出そうとすると、n の値は常に 0 です。

4

1 に答える 1

0

HTTP はステートレスです。これは、リクエストごとにクラスの新しいインスタンスWebForm2が作成されることを意味します。したがって、内部に n の値を設定すると、別のインスタンスであるため、Button1_Clickそこからアクセスしたときに保持されません。Button2_Click

リクエスト間でデータを保存するには、いくつか例を挙げると、いくつかの可能性があります。

  • データベースに保存する
  • Application-object に保存します (これはすべてのユーザーで共有されます:

    // setting the value
    HttpContext.Current.Application("n") = "somevalue";
    
    // Getting the value
    string test = HttpContext.Current.Application("n");
    
  • セッション状態で保存します (これは、1 人のユーザーのすべての要求で共有されます)。

    // setting the value
    HttpContext.Current.Session("n") = "somevalue";
    
    // Getting the value
    string test = HttpContext.Current.Session("n");
    
于 2013-05-11T18:21:50.980 に答える