2011-01-31 18 views
0

ページがリロードされたときに、私がクラスのトップレベルで宣言した変数がリセットされないことを確認するには、どうすればいいですか? IE私は元々0に設定されているカウンタを持っています。ポストバックコントロールを使用すると、その変数がリセットされます。これをC#で起こらないようにするにはどうすればいいですか?ページリロード - 変数の保持

答えて

5

クライアントまたはサーバー固有の値をお探しですか?

クライアントに固有のものを使用する場合は、Cookieまたはセッション値を使用します。

サーバー固有のものを探している場合は、静的なクラス、アプリケーションまたはキャッシュの値を使用してください。

0

クッキーに保存する値を入力します。

1

ASP.NetセッションまたはCookieを使用します。または、値を隠しフィールドに保存することもできます。 articleには、theeseとoutherのオプションについて読むことができます。

0

リンクではなくポストバックを使用している場合は、データをviewstateに保存する必要があります。あなたが現在のページにとどまる場合

VB

Public Property MyValue() As String 
      Get 
       Dim _mv As Object = ViewState("MyValue") 
       If Not _mv Is Nothing Then 
        Return _mv.ToString 
       End If 
       Return String.Empty 
      End Get 
      Set(ByVal value As String) 
       ViewState("MyValue") = value 
      End Set 
End Property 

C#

public string MyValue { 
    get { 
     object _mv = ViewState("MyValue"); 
     if ((_mv != null)) { 
      return _mv.ToString(); 
     } 
     return string.Empty; 
    } 
    set { ViewState("MyValue") = value; } 
} 

ViewStateのは、ポストバックに沿って保存されます。あなたがpage.aspx上にあり、それぞれの時間をクリックすると<asp:button>を使用している場合たとえば、あなたがあなたのデータの一部を保存するための場所としてのViewStateを使用することができ、それがこの

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE4Mzg3MjEyMzdkZNNlI9zvMeIGeUB4MZbJA2gmsHns9IsmAy/c4dQMybXD" /> 

などのページのソースコードを検索しますviewstateが自動的に生成されます

+0

質問はC#とタグ付けされています。しかし、とにかくあなたの解決に感謝! – gor

+0

C#はviewstateを持っていませんか? – Luke

0

そのデータはHTTP要求で保持されません。 Cookieや隠れたコントロールに永続化したり、手動でビューステートに保存したりする必要があります。

手動でページカウンタを実行する場合は、セッション状態で保存することを検討してください。

関連する問題