2011-09-16 36 views
3

私はこの質問を最初に見た:retain value after page refresh。しかし、ViewStateは1つの値しか格納しないので、コレクションでは機能しないようです。ユーザーが作成するオブジェクトのインスタンス数がわからないため、コレクションを使用する必要があります。したがって、ViewStateはオプションではありません。私も静的変数を使ってみましたが、必要以上に長い値を格納しています(ここでは説明が見つかりました:http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/3664cd62-46c7-4098-88a7-c09647673096)。グローバル変数の値を保持する方法リストポストバック後

私はあなたの助けに大変感謝します。

+1

オブジェクトのコレクション... –

答えて

3

リスト<>インスタンスをサーバー側のクライアントセッションに格納することができます。その後、各リクエストごとにセッションのリストにアクセスできます。

ただし、リスト<の項目がシリアライズ可能である限り、viewstateを使用することはできます。

viewstateを使用する場合、ブラウザとWebサーバー間で交換されるデータの量を考慮する必要があります。あなたのアイテムが不当に大きくなく、リストにそれらのアイテムが多すぎない場合、ビューステートは不合理ではないかもしれません。

コードは次のようになります。

private ArrayList GlobalList 
{ 
    get 
    { 
    return ViewState["GlobalList"]; 
    } 
    set 
    { 
    ViewState["GlobalList"] = value; 
    } 
} 
+0

ノートでは動作しません:セッション変数は、サーバーの構成に応じて、シリアライズする必要があるかもしれませんが。 –

+0

こんにちはクリス。私はちょうどあなたが私に提案した変更で質問を更新しましたが、私はまだエラーが発生しています。おそらくそれをチェックしてもらえますか?おかげで多くのバディ – aleafonso

+0

完了!どうもありがとう – aleafonso

-1

リストを使用したい場合は、ポスト後の値を保持するクラスレベルの変数を使用して、クラスレベルの変数にしてから値を緩めないでください。

+0

-1オブジェクトです:完全にASP.NET –

4

頻繁にセッション状態を使用すると、オブジェクトが救済されますが、シリアル化可能なオブジェクトもViewStateに保存できます(http://msdn.microsoft.com/en-us/library/ms972976.aspx)。

注:値はすべての要求で共有されるため、ASP.Netの静的プロパティにデータを格納することは避けてください。メモの注意 - HttpContext.Currentは実際に静的オブジェクト(要求ごとのオブジェクト)ではありません。

関連する問題