3

ASP.NET アプリケーションを作成し、サーバーの IIS7 で実行しました。ブラウザでこの Web フォームを開いてサイトコードを表示すると、次のように表示されます...

ここに画像の説明を入力

Buttons、Labels、TextBoxes、および ListView を使用する多くのコントロールがあります。web.config で ViewState を無効にしようとしましたが、これを無効にすると、アプリケーションが正しく実行されません。私に何ができる?

4

1 に答える 1

6

ビューステートを必要としないコントロールのみを非アクティブにします。

そのためには、ビューステートとは何かを理解する必要があります。

ビューステートは、ページがコントロールの値を保存して記憶し、ポストバック後にそれらを保持する場所です。ビューステートはポストバック後に使用されることに注意してください。

したがって、実際には同じデータが2回ありますが、ビューステートのみが前のデータをポストバックし、コードビハインドはそのデータを使用できます。

したがって、主な問題は、入力した内容を記憶する必要があるのはどのコントロールであるか、または以前の状態を記憶する必要があるのはどのコントロールであるかということです。

EnableViewState をオンまたはオフにした単純なリテラルを見てみましょう。

ViewState オン

<asp:Literal runat="server" EnableViewState="true" ID="txtLiterar">

このリテラルにテキストを配置すると、テキストはビューステートとコード ビハインドにも保存されます。

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        txtLiterar.Text = "Hello There";
    }
}

したがって、ポストバック後もリテラルにはまだコンテンツがあり、ビューステートにコンテンツがあり、自動的に再度埋められるため、再度埋めないようにすることができます。

ViewState オフ

<asp:Literal runat="server" EnableViewState="false" ID="txtLiterar">

このリテラルにテキストを配置すると、そのテキストはビュー ステートやコード ビハインドに保存されず、次のように追加されます。

protected void Page_Load(object sender, EventArgs e)
{
    txtLiterar.Text = "Hello There";
}

したがって、違いは、すべての投稿で常にそのコントロールにデータを入力する必要があることです。

ビューステートが最も必要とされる場所。

ビューステートの最も必要な部分は、ドロップダウン リストに入力するときです。そこには、SelectValue に正しい値を配置するための値を覚えておく必要があるデータバインドとコード ビハインドがあります。

データをページングするときに前のページやその他の情報を保持するため、GridView やその他のコントロールにも必要です。

そのため、ほとんどのコントロールでビューステートを閉じることができます。そのコントロールでは、ポストバックごとに再度入力でき、そのコントロールでは以前の状態を記憶する必要はありません。

詳細:ビューステートの
クラスを最適化する方法
ページを提供する前に ASP.NET ページのビューステートのサイズを決定
する AJAX 呼び出しでビューステート情報を制限する

于 2012-08-23T06:55:03.560 に答える