ViewStateが管理しているコントロールはどれですか?
質問
ASP.NETがビューステートを維持しているものを理解するために、制御インフラストラクチャに頭を包み込んでいます。
次のような通常のHTMLコントロールがあります。
<input type="radio" checked="checked"/>
-<!> gt;これらにはビューステートがありません
次に、runat = <!> quot; server <!> quot;のHTMLコントロールがあります。
<input type="radio" checked="checked" runat="server"/>
-<!> gt;ビューステートはポストバック間で維持されますか?
ASP.NETコントロールがあります
<asp:TextBox id="txtMyText" runat="server"/>
-<!> gt;これらにはビューステートがあることを理解しています
HtmlTextBoxを継承するカスタムコントロールがいくつかあります
<myPrefix:myTextBox id="txtMyText" runat="server"/>
-<!> gt;これは上記のタイプ2と同じですか?
runat="server"
タグを持つコントロールにビューステートが保持されると想定しても安全ですか?
解決
3種類のコントロール、runat = serverタグが追加されたHTMLサーバーコントロール、完全なWebコントロールなどの標準HTML要素があります。 Webコントロールのみがビューステートを維持しています。
他のヒント
ビューステートで問題が発生したときに、Binary FortressのViewstateヘルパーソフトウェアの使用を開始しました http ://www.binaryfortress.com/aspnet-viewstate-helper/
何が起こっているかについての本当の洞察を提供します-ビューステートに関連するパフォーマンスの問題を支援するだけでなく、ワンクリックでビューステートをデコードし、実際にそこにあるものを見ることができますそれらは保存されておらず、正確に保存されています。
また、他の誰も言及していないのはControlStateです。これはASP.NET 2に付随し、理論は、コントロールが機能するために必要な重要な要素がコントロール状態になり、データがビューステートにあるため、スイッチをオフにできることです。ビューステートを使用し、ポストバックごとにデータをコントロールにバインドしますが、コントロールは基本的にcontrolstateを使用して機能します。 <!> quot; theory <!> quot;実際には、実装はパッチが多いように見えるためです。たとえばリフレクターを使用してドロップダウンリストコードを調べると、これは適切に実装されていません。これは、フレームワークの今後のリリースで変更される可能性がありますが、わかりません。あなたがそれを検索した場合、そこにcontrolstateに関する多くの情報があります。
いいえ、HTMLコントロールはビューステートで何かを維持するように設計されていないので、気にする場合はWebコントロールを使用してください。