2012-04-01 8 views
-1

可能な重複をクリックします。 Button click event doesn't work properlyインクリメント番号はC#ASP.NET

は、私は、各デフォルトページをクリックするためにint型をインクリメントしてみてください。 Int=0。それは1までしか上がりません。クリックごとに数字を増やすにはどうすればよいですか?

public partial class _Default : System.Web.UI.Page 
{ 
    private int speed = 0; 

    public int Speed 
    { 
     get { return speed; } // Getter 
     set { speed = value; } // Setter 
    } 

    public void accelerate() 
    { 
     //speed++; 
     this.Speed = this.Speed + 1; 
    } 

    public void decelerate() 
    { 
     // speed--; 
     this.Speed = this.Speed - 1; 
    } 

    public int showspeed() 
    { 
     return this.Speed; 
    } 

    //car bmw = new car(); 
    public void Page_Load(object sender, EventArgs e) 
    { 
     //datatype objectname = new 

     dashboard.Text = Convert.ToString(this.showspeed()); 
    } 

    public void acc_Click(object sender, EventArgs e) 
    { 
     this.accelerate(); 
     dashboard.Text = Convert.ToString(this.showspeed()); 
    } 

    public void dec_Click(object sender, EventArgs e) 
    { 
     this.decelerate(); 
     this.showspeed(); 
    } 
} 
+3

ウェブのステートレスな性質の不変証拠 – Steve

+0

ここに記載されているのと同じ問題があるようです。http://stackoverflow.com/questions/9968298/visual-studios-c-sharp-class-re-called-on – TGH

答えて

1

結果をポストバックを超えて保持する方法で結果を保存する必要があります。私は、例えば、ViewStateのを使用することをお勧め:

public int Speed 
{ 
    get { 
     if(ViewState["Speed"] == null) { 
      ViewState["Speed"] = 1; 
     } 
     return Convert.ToInt32(ViewState["Speed"]); 
    } 

    set { 
     ViewState["Speed"] = value; 
    } 
} 
+1

-page-リフレッシュIは、入力の値はビューステートを介して維持する必要はありません0 –

2

あなたがポストバック値を維持するためにViewStateを使用することができます。ボタンをクリックするたびとき、それはスピードの値を初期化しているので

private int Speed 
{ 
    get 
    { 
     if (ViewState["Speed"] == null) 
      ViewState["Speed"] = 0; 
     return (int)ViewState["Speed"]; 
    } 
    set { ViewState["Speed"] = value; } 
} 
1

を〜

HTTPはステートレスです。これは、Windows Formsプログラミングのように、ポストバック全体の変数の値を保持しないことを意味します。したがって、ポストバック全体で価値を維持する必要があります。

<asp:HiddenField ID="hdnFileId" runat="server" Value="" /> 

と、ページのロード中

、あなたが値を読むことができます:

あなたはその上の機能をしたい値を格納し、値を毎回アクセスするには、ページ内の隠し要素を使用することができます変数にロードします。彼らは、ブラウザで標準のHTMLフォームコントロールとしてレンダリングされているので、Adrianftode'sコメントから

public void Page_Load(object sender, EventArgs e) 
{ 
    this.speed = ConvertTo.Int32(hdnFileId.Value); 
} 

は、テキストボックス、チェックボックス、ラジオボタンコントロールの値のようなコントロールのデータは、ポストバック上のサーバに掲載されます。 Chapter 4. Working with ASP.NET Server Controlsを参照してください。

+0

から開始するようにスピードのためのより良いと思います。なぜ、それは毎回前後に渡っているのですか? –

+0

@AdrianIftode:hTTPはステートレスです。通常の入力フィールドの値はポストバック時には使用できません。これはCASでOPは、各ボタンをクリックしたときに、以前に更新された値を取得したい:すべてのASP.NETコントロールは、私がこの文は入力に対して有効ではありません確信しているポストバック – Shyju

+0

時の値を保持するために内部のViewStateを使用して、私はなぜ –

関連する問題