0

この記事http://www.devx.com/vb2themax/Tip/18714「EnableViewState プロパティを使用してパフォーマンスを改善する」では、EnableViewState を false に設定する場所がわかりません。彼らはただする

If Not Me.IsPostBack() Then
...
DataGrid1.DataBind()

Postback は ViewState と同じですか?

データグリッド コントロールで EnableViewState = false を実行しないのはなぜですか?

4

2 に答える 2

0

この記事では、最初の例 (終了する部分) は通常、「ViewState」を有効にして行うと明確に述べています。グリッドをデータ ソース ( ) にバインドする必要があるのは最初の get-request のみであるIF Not Me.IsPostBack()ため、連続するポストバックによって、保存された ViewState からグリッド データが復元されるためです。

Page_Load メソッドの 2 番目の例では、ViewState が .aspx ファイルで無効になっていると想定し、ページが読み込まれるたびにグリッドをデータ ソースにバインドします。

への呼び出しMe.IsPostBackは、フォームが http ポスト経由でアクセスされたかどうかのみをチェックしますが、ViewState は、ASP.NET サーバー コントロールの視覚的表現に関連するすべての情報を保存するオブジェクトです。だから、いいえ、それらは同じではありません!

于 2012-09-10T11:41:46.147 に答える
0

グリッド コントロールは、多くのコントロールのコンテナーとして機能します。各コントロールは、ViewState に多くの情報を格納します。

デフォルトでは、ViewState は非表示のコントロールに格納されます。これは、ページ要求ごとにクライアントに送信されることを意味します。このオーバーヘッドを回避するには、EnableViewState を false に設定します。

<asp:GridView ID="GridView1" runat="server" EnableViewState="false">

ViewState と PostBack は、まったく無関係な 2 つのエンティティです。ViewState は、コントロールが保持する必要のあるすべての情報を格納します。PostBack は、ユーザーがページに情報を送り返すことのみを指します。

ただし、ViewState は、最後の PostBack でユーザーが入力した値を記憶するのにも非常に役立ちます。ViewState が非常に大きく、ユーザーに送信したくない場合は、セッションに保存することを検討してください。これを行うには、PageStatePersister をSessionPageStatePersisterに設定します。

SessionPageStatePersister は、ブラウザー セッションに関連付けられたサーバー セッションを使用してデータを格納します。隠しフィールドの代わりにセッションを使用すると、ブラウザーとの間で送受信されるページ サイズの増加を回避できます。多くの場合、ページの状態はマークアップ全体の重要な部分です。ただし、このデータをセッションに保存すると、貴重なサーバー リソースが消費されます。

于 2012-09-10T11:45:15.457 に答える