2016-01-11 1 views
0

J'essaie actuellement d'apprendre à utiliser l'état de la session, mais j'ai rencontré un problème que je n'arrive pas à résoudre. Ce que j'essaye de faire est d'avoir un bouton qui quand je clique dessus augmentera la valeur de ma variable de 1, mais mon problème est que les trois premières fois que je clique sur mon int n'augmente pas mais sur le quatrième clic fonctionne comme prévu et augmente.État de la session n'épargnant pas de valeur jusqu'à la troisième tentative

Ceci est mon code.

private static int Clicks = 1; 

protected void Page_Load(object sender, EventArgs e) 
{ 
    // First page load? 
    if (!IsPostBack) 
    { 
     Session["Clicks"] = Clicks; //Clicks 
    } 

    Label1.Text = Convert.ToString(Session["Clicks"]); 
} 

protected void btnCounter_Click(object sender, EventArgs e) 
{ 
    //UserClick.BtnClicks++; 
    Session["Clicks"] = Clicks++; 
} 

Répondre

2

Vous devriez regarder le ASP.NET Page Lifecycle (voir Postback Gestion des événements).

Cet événement de clic btnCounter ne sera déclenché qu'après l'événement Page_Load. Vous obtiendrez probablement de meilleurs résultats si vous mettez à jour le Label dans votre événement Click.

protected void btnCounter_Click(object sender, EventArgs e) 
{ 
    Session["Clicks"] = Clicks++; 
    Label1.Text = Session["Clicks"].ToString(); 
} 
0

Aussi, parce que vous définissez dur que to'1' variable, chaque fois que vous cliquez sur le bouton, il sera remis à 1. Vous voulez sans doute de le remplacer par getter et setter que les chèques de variable de session existe et, si c'est le cas, définit la valeur à cela.