2013-05-11 3 views
0

Я пытаюсь написать свою первую WebApplication в ASP.NET. Вот мой код:Asp.net потеряет значения переменных

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.

+0

Дорогой друг пользуется представлением или статическими полями или статическими свойствами – Developerzzz

ответ

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"); 
    
  • Сохранить его в сеансовом состоянии (это является общим для всех запросов для одного пользователя):

Смежные вопросы