4

ASP.NET がどのビュー ステートを保持しているかを理解するために、コントロール インフラストラクチャに頭を悩ませようとしています。

これらの通常の HTML コントロールがあります。例: <input type="radio" checked="checked"/>-> これらにはビューステートがないことを理解しています

次に、runat="server" を含む HTML コントロールがあります <input type="radio" checked="checked" runat="server"/>-> ビューステートはポストバック間で維持されますか?

次に、ASP.NETコントロールがあります <asp:TextBox id="txtMyText" runat="server"/>->これらにはビューステートがあることを理解しています

HtmlTextBox を継承するカスタム コントロールがいくつかあります <myPrefix:myTextBox id="txtMyText" runat="server"/>-> これは上記のタイプ 2 と同じですか?

runat="server"タグを持つコントロールはビューステートを維持していると想定しても安全ですか?

4

4 に答える 4

6

のような標準の HTML 要素、runat=server タグが追加された HTML サーバー コントロール、および完全な Web コントロールの 3 種類のコントロールがあります。ビューステートが維持されるのは Web コントロールだけです。

于 2009-03-03T17:54:58.023 に答える
3

ビューステートに問題があったとき、Binary Fortress http://www.binaryfortress.com/aspnet-viewstate-helper/の Viewstate ヘルパー ソフトウェアを使い始めました。

これにより、何が起こっているかについての実際の洞察が得られます。また、ビューステートに関連するパフォーマンスの問題を支援するだけでなく、ワンクリックでビューステートをデコードし、実際にそこにあるものを確認できます。 t、そして正確にそこに格納されているもの。

また、誰も言及していないのは ControlState です。これはASP.NET 2に付属しており、理論では、コントロールが機能するために必要な重要なものはコントロール状態になり、データなどはビューステートになるため、ビューステートをオフにしてデータをバインドできますすべてのポストバックのコントロールと、コントロールは基本的に controlstate を使用して機能します。私が「理論」と言うのは、実際には実装が不完全に見えるからです。たとえば、リフレクターを使用してドロップダウンリストのコードを調べると、これは適切に実装されていません。これは、フレームワークの以降のリリースで変更された可能性がありますが、よくわかりません。controlstate については、検索すればたくさんの情報が出回っています。

于 2009-03-12T23:42:14.750 に答える
2

いいえ、HTML コントロールはビューステートで何かを維持するようには設計されていません。気になる場合は、Web コントロールを使用してください。

于 2009-03-03T15:48:33.180 に答える