5

コントロールの CommandName および CommandArgument プロパティが格納されている場所を知っている人はいますか? 私はそれらを取得することに興味はありません。ASP.NET の内部構造と将来のページ サイズに関する考慮事項について詳しく知るためです。:)

commandArg と CommandName が次のように設定された 3 つのボタンを含む単純なページを作成しました。

<asp:Button Text="Click1" runat="server" CommandArgument="1" CommandName="Delete" OnCommand="CommandExec" />
<asp:Button Text="Click2" runat="server" CommandArgument="2" CommandName="Save" OnCommand="CommandExec" />
<asp:Button Text="Click3" runat="server" CommandArgument="3" CommandName="Copy" OnCommand="CommandExec" />

CommandArgument または CommandName をかなり大きな値に変更しても、ViewState のコンテンツとサイズには影響しないので、これらの値はどこに保存されますか?

ありがとう

4

3 に答える 3

2

これらの値は実際にViewState

CommandArguments/Names などを使用する場合と使用しない場合の単純なボタンでテストするとGridView、ViewState の方が大きいことがわかります。

ただし、これらの値が非常に大きなオブジェクトになることは決してないため、個人的には心配する必要はありません。

于 2012-05-08T08:25:05.027 に答える
2

ASP.NET の内部を理解したい場合は、Nikhil Kothari と Vandana Datye による「ASP.NET サーバー コントロールとコンポーネントの開発」が最適な本だと思います。.NET 1.x 用に書かれているため、少し古いですが、基本的なアーキテクチャを十分にカバーしています。

あなたの例では、ViewState のサイズが影響を受けない理由は、マークアップが処理される Init フェーズで ViewState が追跡されていないためです。マークアップで固定値に設定されたプロパティ値は、ASP.NET ページのコンパイル時に生成されるコードに組み込まれます。

この MSDN の記事では、ViewState の概要について説明しています。

ボタンをリピーターや GridView などのデータ バインド コントロールに配置し、データ バインディング構文を使用して各行の CommandArgument に異なる値を設定すると、ViewState が大きくなることがわかります。

于 2012-05-08T08:34:46.333 に答える
2

ビューステートに保存されます。次の投稿を参照してください: http://www.west-wind.com/weblog/posts/2006/Feb/20/ViewState-and-OnItemCommand-on-an-ASPNET-Repeater

于 2012-05-08T08:22:55.720 に答える