2011-01-21 10 views
1
<asp:TextBox ID="TextBox1" runat="server" EnableViewState="false" /> 
<asp:Button ID="Button1" runat="server" Text="Button" /> 

私はEnableViewStateプロパティをfalseに設定しましたが、ボタンをクリックすると、テキストボックスの値はポストバック後も維持されます。なぜ価値が持続するのですか?特定のコントロールのviewstateを無効にするにはどうすればよいですか?

+0

http://stackoverflow.com/questions/5748354/asp-net-page-controls-and-viewstate/15129881#15129881 – Lijo

答えて

4

Understanding ASP.NET View Stateをご覧ください。ページライフサイクルには、フォームデータからコントロール値を入力するLoad Post Dataステージがあります。

View Stateは非常に混乱します。具体的には、コントロールにポストバック時にフォームデータが入力されている必要があります。上記の同じリンクからのThe Role of View Stateは、なぜそれが有用であるかを説明するまともな仕事をしています。

要約すると、ユーザー入力にビューステートは必要ありません。ビューステートは、発生するページ状態へのプログラムによる変更を保存するために使用されます。簡単な例は、非送信ボタンがクリックされ、ハンドラがラベルのテキストを変更する場合です。その変更はビューステートに保存され、追加のポストバック全体に保持されます。

+0

ありがとうございました。あなたが言った記事は間違いなく面白いです。私はIPostbackdatainterfaceについて知りませんでした。例はかなり説明されています。 –

-1

Explanation

最も簡単な方法は、String.Emptyをするたびに、Textプロパティを設定することです。

+1

これは非常に悪い練習の私の友人です。 –

+0

なぜあなたはそう思いますか? – zavaz

+0

私はviewstateを使う方法を尋ねていました!! –

0

入力を受け入れるコントロールは、サーバーに送信されたデータを使用して状態を復元できます。 ViewStateに格納する必要はありません。ある意味では、これは古い値ではなく、ユーザーが(彼が変更していない可能性があるにも関わらず)提出した新しい値です。

関連する問題