我正在尝试在 ASP.NET 中编写我的第一个 Web 应用程序。这是我的代码:
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。
HTTP 是无状态的。这意味着对于每个请求,该类的一个新实例WebForm2
被创建。所以如果你在里面设置n的值Button1_Click
当您从以下位置访问它时,它不会被保留Button2_Click
因为这是一个不同的实例。
要跨请求保存数据,有多种可能性,仅举几例:
- 将其保存在数据库中
-
将其保存在应用程序对象中(这在所有用户之间共享:
// setting the value
HttpContext.Current.Application("n") = "somevalue";
// Getting the value
string test = HttpContext.Current.Application("n");
-
将其保存在会话状态中(这在一个用户的所有请求之间共享):
// setting the value
HttpContext.Current.Session("n") = "somevalue";
// Getting the value
string test = HttpContext.Current.Session("n");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)