2011-11-08 125 views
1

我需要做一個基本的網頁(作業)頁面刷新之間保存變量

用戶需要輸入數字到文本框。在每個號碼之後,他需要按下「輸入號碼」按鈕。

和幾個數字後,他需要按不同的按鈕來顯示他的號碼和一些計算。

我不能使用數組(作業限制)。

問題是,每次用戶按「輸入號碼」後,變量都會重置。

我該怎麼辦?

下面的代碼:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace WebApplication1 
{ 
    public partial class WebForm1 : System.Web.UI.Page 
    { 
     int totalSum=0; 
     int mulOdd=1; 
     int small=0; 
     int big=0; 
     float avg=0; 
     int pairsum=0; 
     int counter = 0; 

     protected void Page_Load(object sender, EventArgs e) 
     { 
     } 

     protected void Button1_Click(object sender, EventArgs e) 
     { 
      int t; 
      counter++; 

       t = Convert.ToInt16(TextBox1.Text); 
       totalSum = totalSum + t; 
       avg = totalSum/counter; 
       int odd = t % 2; 
       if (odd > 0) 
       { 
        mulOdd = mulOdd * t; 
       } 
       else 
       { 
        pairsum = pairsum + t; 
       } 

       if (t < small) 
       { 
        small = t; 
       } 
       if (t > big) 
       { 
        big = t; 
       } 

      TextBox1.Text = " ";`enter code here` 
      Label1.Text = Convert.ToString(counter); 
     } 

     protected void Button2_Click(object sender, EventArgs e) 
     { 
      Label1.Text = "total Sum" + Convert.ToString(totalSum); 
     } 
    } 
} 

謝謝。

回答

2

您需要將變量保存爲狀態。有幾種方法來傳遞變量

[1]餅乾(這很少見使用)

[2]會議(適合頁面之間存儲爲不同的用戶)

[3]的ViewState(同一頁面保存爲用戶)

[4]查詢字符串(在頁面間傳遞)

有關於這些讀這應該做的伎倆。原諒我,如果我錯過了一些。

+0

謝謝我會嘗試使用會話 –

+0

如果它是相同的頁面的東西,我會考慮viewstate(在代碼中的工作方式幾乎相同) –

0

在不知道分配條件的情況下很難提供幫助,但是一種可用的方法是在頁面上有一個隱藏字段(webusercontrol),該字段包含一個字符串。每次單擊該按鈕時,都會將該數字的字符串表示形式附加到該控件的值上,確保將值與符號分開(逗號,#,|,任何事情都會真正實現)。然後在這個過程中的任何時候,你都可以獲得該控件的值,將其分解到字符上,然後計算你需要計算的任何值。

由於這被確定爲家庭作業,我不會發布代碼,但是這個過程應該是非常簡單的。

0

在您的頁面加載事件中,請檢查Page.IsPostback屬性。如果爲true,則根據來自服務器控件HTML標記的用戶輸入重置您的變量。

閱讀@Oded提供的鏈接。頁面生命週期是一個非常重要的話題。

0

一些指針,你可以擴展到所有的變量......

  1. 刪除所有這些變量的全局聲明,你並不需要有一個全球範圍內爲他們:

    int totalSum=0; 
    int mulOdd=1; 
    int small=0; 
    int big=0; 
    float avg=0; 
    int pairsum=0; 
    int counter = 0; 
    
  2. Button1_ClicktotalSum像這樣:

    ViewState["Sum"] = Convert.ToInt16(string.IsNullOrEmpty(ViewState["Sum"])?"0":ViewState["Sum"].ToString() )+ Convert.ToInt16(TextBox1.Text); 
    
  3. 最後在Button_Click2做:

    Label1.Text = "total Sum" + Convert.ToString(string.IsNullOrEmpty(ViewState["Sum"])?"0":ViewState["Sum"].ToString());