2011-06-28 10 views
1

ビューステートを無効にしました。しかし、私はまだページソースでviewstateを表す短い文字列を参照してください。各コントロールのビューステートが無効になっている場合でも、Viewstate Visibleを表す短い文字列

私は2つのコントロール、1つのチェックボックスと他のtexboxを持つページを作成しました。コントロールとページのビューステートを完全に無効にしました。しかし、私はまだ隠れ変数でビューステートが含まれているレンダリングのdivを参照してください。

<div class="aspNetHidden"> <input id="__VIEWSTATE" type="hidden" 
    value="/wEPDwUKMTcwNTQzMjY4MWQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFG‌​ 
    2N0bDAwJE1haW5Db250ZW50JGNoYm94VGVzdPRq7jJUwzyCcKYfAFB/seRcAvziSp3bKL23H9U7O9sU" 
    name="__VIEWSTATE"> </div> 

は誰でもない、あなたは完全にビューステートを取り除くことはできませんasp.net

+0

マークアップを提供してください。 –

+0

2つのコントロール、1つはチェックボックス、もう1つはテックスボックスでページを作成しました。コントロールとページのビューステートを完全に無効にしました。しかし、私はまだ隠れ変数のビューステートを含むレンダリングを参照してください

答えて

1

1)ViewStateを使用する場合は、ASPXページにサーバー側フォームタグ()が必要です。フォームフィールドは、ViewState情報を含む非表示フィールドがサーバーにポストバックできるようにするために必要です。そして、それはサーバー側のフォームでなければならないので、ページがサーバー上で実行されるときにASP.NETページフレームワークが隠しフィールドを追加することができます。

2)ページ自体が20バイト程度の情報をViewStateに保存します。この情報は、ポストバック時にPostBackデータとViewState値を正しいコントロールに配布するために使用されます。したがって、ページまたはアプリケーションでViewStateが無効になっていても、ViewStateに残りのバイトがいくつか表示されることがあります。

3)ページが返信されない場合は、サーバーサイドタグを省略してページからViewStateを削除できます。

http://msdn.microsoft.com/en-us/library/ms972427.aspx

これは、制御状態です。

あなたが本当にビューステートを取り除きたいとページのために、または非常に注意してください、コードビハインドが

class MyPage : Page { 
    private class DummyPageStatePersister : PageStatePersister { 
     public DummyPageStatePersister(Page p) : base(p) {} 
     public override void Load() {} 
     public override void Save() {} 
    } 
    private DummyPageStatePersister _PageStatePersister; 
    protected override PageStatePersister PageStatePersister { 
     get { 
      if (_PageStatePersister == null) 
       _PageStatePersister = new DummyPageStatePersister(this); 
      return _PageStatePersister; 
     } 
    } 

    // other stuff comes here 
} 

から派生する任意のクラスのコードビハインドでこのコードを使用することができますControlStateをした場合あなたがコントロールとの契約に違反しているので、これを行うとき。 MSDNは、制御状態が常に利用可能であることを明示的に述べています。しかし、実際には、それは私のために働いています。

編集:私はdownvotedたので 、私は再び指摘したい:あなたは、あなたがやっている内容を正確に把握しない限り、これをしないでください。私の場合、ほとんどのアプリケーションはクライアント側のjavascriptで書かれていましたが、ポストバックが発生した数少ない場所では、常に値を取得するためにRequest.Formコレクションを使用しました。 これを行うと、単純なレンダリング以外の目的でサーバー側のコントロールを使用しないでください。

0

のこの動作を理解するのに役立ちます。それぞれのコントロールごとにビューステートをオフにしても、ページ自体を表す比較的短い文字列が常に存在します。

チェックState Management (View State)

+0

私は質問の答えを得るために参照する必要があります記事全体のセクションを教えてくれますか? –

+0

えええええええええええええええええええええええええええええええええええええええええええええること記事で – Saurabh

+0

私はそれを取り除くことができないことを知っている、私の質問は、asp.netの動作がこれを引き起こすものです。あなたの記事を見て、これを説明する場所を見つけることができません。また、回答を出すときに、ブログのリンクを貼るのではなく、あなたの側から何らかのレベルの説明を提供してください。 –

関連する問題