2011-06-19 11 views
3

に問題があります。ボタンが押されたときにコードで私は私はこのようなビューステートを使用ViewStateの

public bool SearchClicked 
{ 
    get { return Session["bool"]==null? false : (bool)Session["Bool"]; } 
    set { Session["bool"] = value; } 
} 

を、イベントがトリガさ。私はサイトを開始し、ポストバックがある場合

if (SearchClicked) 
{ 
} 

、値が設定されている:それは本当であるかない場合、私はチェック戻ってすべてのポストで

SearchClicked=true; 

は、私はそれを設定します"真"にする。

私がアプリケーションを実行する前に、それを実際に数回設定したボタンを押したのは事実です。しかし、アプリケーションインスタンスは、アプリケーションを実行するたびに新しいものです。それは、アプリケーションを実行するたびにViewStateがリセットされ、セッション(20分)のような状態を保存しないことを意味しないのですか?

+0

ViewStateは、基本的な用語では、暗号化された形式で値を格納する隠しフィールドです。つまり、同じページにポストバックからポストバックまでのデータを保持します。しかし、ページを離れて戻ってくると、リセットされます。セッションのようなタイムアウトはありません。彼らは2つの全く異なる概念です。 –

+0

はいbeacuse ViewStateプロパティはページに隠れたフォームフィールドに格納されています。アプリケーションは実行中です。ページのライフサイクル中にデータを保持し、クライアント側ではセッション状態が管理され、クライアント側では管理されます。 – Syeda

答えて

11

上記のコードでは、ViewStateを使用してSearchClicked値を格納するのではなく、セッションを使用して格納しています。 ViewStateは隠し値でページに保持され、サーバーにポストバックされます。これは、ビューステートがブラウザに保存されていることを意味し、そのため、ユーザーがページにいる間はビューステートが維持されます。セッション情報はサーバーに保存されます。ユーザーセッションは最終的にタイムアウトしますが、アプリケーションの再構築やweb.configファイルの編集など、セッションがリセットされる可能性があります。 、多かれ少なかれ何もポストバックないときにビューステートがページの「状態」を扱う次

public bool SearchClicked 
{ 
get { return ViewState["bool"] == null ? false : (bool)ViewState["bool"]; } 
set { ViewState["bool"] = value; } 
} 
+1

+は、記憶機構の違いを呼び出すためのものです。 – Khepri

+0

。私の間違い。あまりにも多くのコピーと貼り付け。ありがとうございます。 – Matrix001

0

を使用ViewStateのに店に

。実際にはアプリケーションとはほとんど関係がありません。目的は簡単です。

私は、以前の私の.NET学習で、この資料は非常に役に立った: Understanding ASP.NET View State (特にセクション「ビューステートの役割」)

+0

私はそれを昨日読んでいます。 viewstateは辞書を保持してどのように動作しますか?それに問題はありますか? – Matrix001

+0

ビューステートに辞書を格納する際に問題はありません。ビューステートに非常に大量のデータを格納すると、ページのパフォーマンスが低下することに注意してください。ページのビューステートに何を格納するかを決めるときにこれを考慮してください。 – Gibron

関連する問題