2011-11-08 8 views
1

基本的なWebページ(宿題)を行う必要がありますページリフレッシュ間で変数を保存する

ユーザーはテキストボックスに数字を入力する必要があります。すべての番号の後に、「番号を入力」ボタンを押す必要があります。

いくつかの数字の後に、彼は数字といくつかの計算を表示するために別のボタンを押す必要があります。

私は配列を使用できません(宿題制限)。

問題は、ユーザーが「enter number」を押すたびに、変数がリセットされることです。

私は何ができますか?ここ

はコードです:

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. ようにtotalSum店舗Button1_Clickで:

    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()); 
    
関連する問題