2009-05-14 18 views
5

viewstateを無効にするのはいつ安全ですか?コントロールのために?どの回戦の下で?ユーザーコントロールでviewstateを無効にするのはいつ安全ですか?

私は無効ビューステートを持っていますが、私はこのコントロールに

<asp:LinkButton ID="LinkButton1" runat="server" 
    CommandName="Delete" 
    OnClientClick="return confirm('¿Está seguro que desea eliminar el mensaje?');" 
    EnableViewState="true"> 
    <asp:Image ID="ImageButton1" runat="server" ImageUrl="~/Content/Images/delete.png" 
     ToolTip="Eliminar mensaje" /> Eliminar 
</asp:LinkButton> 

をクリックしようとすると、私は、System.InvalidOperationExceptionが例外を取得します。 ListViewの内部にあります。

答えて

3

ほとんどのコントロールは、viewstateを無効にすると予想どおりに動作します。 Gridviewsのような組み込みの機能を持つより多くの「動的な」コントロールは、viewstateなしではうまく動かない傾向があります。

あなたのコントロールでenableviewstateプロパティがtrueに設定されている場合、例外はviewstateに関連していますか?

+0

下記参照してください、私はDataKeyNamesのpropertieを設定していなかったため、例外がいました。しかし、問題は同じように有効ですね。 – eKek0

0

いつでもビューの状態を無効にすることができます。必要ならば、ページの状態を維持するための他の方法を見つける必要があります。隠されたフォームフィールドの昔ながらの方法を使用することです。

大規模で複雑なオブジェクトをビューステートに配置しない限り、通常は無効にする必要はありません。

8

ポストバックを介してページに物事を覚えさせるかどうかは、このコントロールの 値 - 各ポストバックビューステートの値を再作成または割り当てる場合

Here's(結合又は プログラムで割り当てることによって)制御には、いくつかの良いポインタ

動的に挿入値不要ですそれが再レンダリングされるとき、例えば は保持されません。 ビュー1からビュー2への切り替え。しかし、あなたは は、あなたがそれを無効にすることができ、 があなたのコントロールを再初期化に をレンダリングしていない、その後 場合は、そのビューステートを無効にしない ごとに値を再増殖と思う を実装するために重いにあるレンダリング 場合、二つのことを考慮する必要がありますイベント。なぜ私はこれを提案していますか? のサーバサイドコードの処理は、 のデータをサーバに戻して往復でクライアントに を転送するよりもずっと速く、 であるため、 です。

On DatalistおよびDropDownList - OnSelectedIndex 変更イベントを使用していない場合は、 ビューステートを無効にすることができます。

オングリッドビュー - これは、 ビューステートを無効にするか保持するかを決定する最も難しい部分です。 だけでデータを表示している場合、または でも選択用に使用している場合は、 ビューステートを無効にします。 ページングを使用している場合は、 機能を編集または削除してください。 Gridviewは 最大のビューステートの容量を持っていますので、 はそれを賢明に使うべきです。 5個の列を更新する必要がある場合は、なぜ を別のビューを開くだけでなく、 の値を に設定してください。 をグリッドビューに直接更新するよりも、

0

フレームワークの.NET Framework 2.0以上のバージョンを使用している場合は、ビューステートの代わりにコントロールステートという新しい機能を使用できます。これは、ビューステートに比べてパフォーマンス面で非常に高速です。

詳細はよくサイト...

http://www.pluralsight.com/community/blogs/fritz/archive/2004/07/01/472.aspx

http://msdn.microsoft.com/en-us/magazine/cc163901.aspx

http://www.codeproject.com/KB/user-controls/TestControlStateEx.aspx

関連する問題