2012-04-03 6 views
0

こんにちは私はちょうど1ページでポストバック間で維持したい小さいList<string>を持っています。リストには10​​個以上の項目が含まれず、各項目は最大40文字(機密データなし)です。ASP.NET Webフォームは、ポストバックを介してリスト<string>を維持します。

私は同様の質問が尋ねられたことを知っていますが、これをViewStateまたはSessionに保存することとは多少相反しています。小さな文字列値でもViewStateの値がかなり大きくなる可能性があると聞いています。私はリストを繰り返し、それを照会するLinqを使用したいと思いますが、string[]配列を使用するほうが良いでしょうか?このリスト(謙虚なサイズの)はViewStateに保存してもよろしいですか、それともSessionに保存する必要がありますか?ありがとうございました。

答えて

1

ViewStateに物を格納することは、悪用しない限り、ひどい考えではありません。リストが小さく、1つのページでのみ意味がある場合は、それに行く。

ViewStateが改ざんされる可能性があることを覚えておいてください。クライアントがそれについて知りたくない場合は、あなたは金色です。それ以外の場合は、セッションに保存します。

+0

こんにちはジョシュ、ありがとう。 'Session'に格納するべき魅力的な理由はありますか? – maGz

+0

これはおそらく私が意図的にViewStateに格納したいアプリケーション全体の2つのうちの1つに過ぎません。 – maGz

+0

@maGz - セッション全体で永続化したい場合や、別のページでアクセスできるようにする場合にのみ使用します。セッションに大きく依存しているとスケーリングが難しくなるため、できるだけセッションを使用しないようにする傾向があります。たとえば、Webファーム内の別のサーバーにバウンスされるような場合。 1つのページにしか存在しない場合は、ViewStateが最適です。もう一度、それを悪用しないでください。大きなViewStateは、それ自身の邪悪な形です。 – Josh

2

私はこのList<>の範囲をさらに懸念しています。この1ページのみに限定されている場合は、ViewStateを使用しても問題ありません。それはまさにそれが意味するものです。

しかし、これを複数のページにまたがって保存する必要がある場合は、SessionまたはCacheを評価する方が理にかなっています。

リストが各ユーザーごとに異なる場合、または複数のユーザー間で共有できる場合も念頭に置いてください。その場合、私はCacheに向かって傾いています。

最後に、私はおそらくこれについて忘れ去られるでしょうが、クラスを使用してサーバー側のメモリにViewStateを格納するオプションを見ることもできます。

幸運を祈る!

+0

すべての情報は私の学習に役立ちますので、私は+1します!私は複数のページにまたがって永続化する必要はありません(実際には、Session.Abandon()を使用してすべてのセッション変数をOnLoggedOutでクリアしていますが、他の場所ではデータが利用できない方が好きです)。私は基本的にユーザーがアップロードした写真のファイル名を追跡したいので、ユーザーが変更されます...ユーザーは、アップロード済みの特定の写真を省略することもできますし、チェックする方法も提供します写真が10枚以上アップロードされていない場合 – maGz

関連する問題