2017-05-16 109 views
0

這算可能是一個愚蠢的愚蠢的問題,但是這是爲什麼不增加近2?ASP.NET C#:標籤上按下按鈕

無論多少次我點擊按鈕的標籤粘貼在2

protected void nextBtn_Click(object sender, EventArgs e) 
    { 
      questions = 1; 
      questions++; 
      qstnLbl.Text = questions.ToString(); 
    } 

標籤應該是從1開始,在按下按鈕添加像2-3-4等多項我錯過了什麼嗎?

回答

1

Web是無狀態的。 questions在每次回發時被初始化爲1,因此該值始終爲2;

請更改代碼以下面其中狀態使用會話保持:

protected void nextBtn_Click(object sender, EventArgs e) 
{ 
    questions = 1; 
    if (Session["questions"] != null) 
     questions = (int)Session["questions"]; 
    questions++; 
    Session["questions"] = questions; 
    qstnLbl.Text = questions.ToString(); 
} 

有很多方法在網絡維護狀態。請通過這個link獲得更多的信息。

+0

當然,會議是回過頭來困擾我,我還在學習這個ASP.NET和會話一直是一個巨大的痛苦現在。這工作完美,非常感謝! –

+0

是的,維護狀態在ASP.NET中是一個挑戰。正如我在答案中所說的,您還可以嘗試鏈接中提到的其他方式來維護狀態。 也請接受答案,以便讓其他人清楚。 – Boney

0

即使在控制檯或桌面應用程序,這將不會因爲工作的每一次點擊您要重新初始化你的價值爲1

而且HTTP由其他答案提到的是無狀態的。

0

你增加價值的方式是正確的,但它永遠是2,因爲您聲明和分配值就按一下按鈕質疑變量1。所以當你點擊按鈕時,你會得到1的問題變量,它將增加到2,並將顯示在標籤中。

因此,要解決這個問題,你必須使用的東西,除非你摧毀的東西,將永遠保持你的問題的變量。因此,您可以使用ViewState,Session或Cookie。

使用會話。

protected void nextBtn_Click(object sender, EventArgs e) 
{ 
    int questions = Session["questions"] ==null? 1: 
     Convert.ToInt32(Session["questions"]);   
    questions++; 
    Session["questions"] = questions; 
    qstnLbl.Text = questions.ToString(); 
} 

同樣,您可以使用ViewState或Cookie代替會話。