2012-04-01 9 views
1

ビジュアルスタジオでは、ページがリフレッシュされるたびにクラスが呼び出されますか?次のクラスがあります - ボタンをクリックするたびに変数に値を追加したい。Visual Studio C# - ページリフレッシュで再呼び出しされるクラス

public partial class _Default : System.Web.UI.Page 
{ 
    Random random = new Random(); 
    int total; 
    int playerTotalValue; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 
    protected void ranPlayer_Click(object sender, EventArgs e) 
    { 
     int randomNumTwo = random.Next(1, 10); 
     playerTotalValue = playerTotalValue + randomNumTwo; //playerTotalValue gets reset to zero on every click 
     playerTotal.Text = playerTotalValue.ToString(); 
    } 
} 

playerTotalValueは、私が「ranPlayer」ボタンをクリックするたびにゼロにリセットを取得し、またはこれは私が起こる考えるものです。

答えて

5

HTTPはステートレスです。つまり、Windowsフォームプログラミングのように変数の値を保持しないということです。ボタンをクリックするたびに、最初のページの読み込みと同じ方法で実行されます。ちょっと待って !。テキストボックスに値があります。だからそこから値を読み込んで変数に格納することができます。

protected void ranPlayer_Click(object sender, EventArgs e) 
    { 
     playerTotalValue =0; 
     if(!String.IsNullOrEmpty(playerTotal.Text)) 
     { 
      playerTotalValue =Convert.ToInt32(playerTotal.Text); 
     } 
     int randomNumTwo = random.Next(1, 10); 
     playerTotalValue = playerTotalValue + randomNumTwo; //playerTotalValue gets reset to zero on every click 
     playerTotal.Text = playerTotalValue.ToString(); 
    } 
+0

asp.net TextBoxコントロールはviewstateに依存しません。そのデータはフォームポストで使用できるため、viewstateなしでポストバック間の状態を維持できます。 http://stackoverflow.com/questions/1475806/asp-net-how-viewstate-works – Shay

+0

@Shay:あなたは正しいです。私は間違いを理解し、その声明を私の答えから削除しました。ありがとう – Shyju

2

このインスタンスの継続時間は、の要求です。その後、それは破棄されます。すべてのリクエストは別々のオブジェクトを使用します。

要求の間に保存する必要がある状態は、要求の一部(httpフォームフィールドやCookieなど)であるか、サーバー(セッション状態)で保持されている必要があります。

はい:は、各リクエストの開始時に0です。

0

私は値をViewStateに保存するプロパティを作成し、値はポストバック時に保存されるようにします。

関連する問題