2012-05-08 9 views
4

コントロールのCommandNameプロパティとCommandArgumentプロパティがどこに格納されているか知っていますか?私はそれらを取得することに興味がなく、ASP.NETの内部構造と将来のページサイズの考慮事項についてもっと知りたいだけです。 :)次のようにASP.NET CommandName値とCommandArgument値はどのように格納されますか?

私は彼らの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の内容やサイズには影響を与えませんので、どここれらの値は保存されていますか?それはビューステートに保存され

ありがとう

+0

http://www.west-wind.com/weblog/posts/2006/Feb/20/ViewState-and-OnItemCommand-on-an-ASPNET-Repeaterコメントの中には、「CommandName/CommandArgument shouldn ViewStateとは何の関係もありません "_。 –

答えて

2

ASP.NET内部を理解したいと思えば、私はまだ最高の本はDeveloping ASP.NET Server Controls and Components by Nikhil Kothari and Vandana Datyeだと思っています。これは、.NET 1.x用に書かれているため、少し古いものの、基本的なアーキテクチャは本当にうまくカバーしています。

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

This MSDN articleは、ViewStateの概要を示します。

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

+0

ありがとうジョー、私は出力マークアップでViewStateのサイズをチェックしました。ブックのおかげで、ありがとうございましたが、引き続き議論はViewState以外のどこかに保存しなければならないことを強調しています。 – Bakhshi

+0

私が強調している理由は、ボタンを送信してそのページのラベルに引数を保存すると、ビューの状態(現在は引数が入っています)が大きくなります。これは、引数が含まれていればビューの状態が比較的大きくなければならないことを示しています。 – Bakhshi

+1

@Bakhshi、サンプルでは、​​マークアップで定義された固定値なので、ページのコンパイル時に生成されるコードに保存されます。それらが動的な値であった場合、たとえばデータバインディング中に生成されると、ViewStateに格納されます。 – Joe

2

これらの値は、実際にViewState

に格納されていますボタンをクリックしてCommandArguments/Namesなどを指定します。次に、ViewStateが大きいことがわかります。

しかし、これらの値は本当に大きなオブジェクトや何かになることはありませんので、私は個人的にそれについて心配しません。

+0

Timに感謝します。しかし、これらの2つ(私のサンプルとグリッドサンプル)はViewStateストレージモデルをサポートしていません。 gridviewは非常に複雑で、ひどく内部状態のためにviewstateに依存します。しかし、ここでは大きな文字をCommandArgemntに貼り付けることで、ViewStateのサイズを少しでも変更することはできません! – Bakhshi

+0

ViewStateのサイズがこのようなものになることが懸念される場合は、asp.net-MVCに移動することを検討してください。あなたがViewStateで作業しておらず、すべてを制御することができるからです。 –

+0

ええ、そうです。私は最近、MVCについて学びました。私は非常に便利でした:) – Bakhshi

関連する問題