4

現在、データのページング中に現在のページ番号を保存するためだけにビューステートを使用しています。ページをめくることができるデータを持つページに 3 つのコントロールがあります。

これまでのところ、ページ番号を追跡する最も簡単な方法はビューステートですが、非常に大きくなり、その理由がわかりません。

そのため、ページ番号を追跡するために別のものを使用したいと思いますが、何を使用すればよいかわかりません。非表示のフォーム フィールドとして埋め込む必要がありますか? クエリ文字列で渡しますか? 他の良いオプションは?

4

4 に答える 4

6

現在のページ番号を保存するためにビューステートを使用していると述べています。これにより、この番号を明示的にビューステートに保存していると思います。

ただし、asp.net は既定で、viewstate に大量のデータを格納します。あなたの例では、ページングが有効になっている 3 つのコントロールを使用すると、asp.net は「コントロール内のすべてのデータ」を保存します。つまり、現在 3 つのコントロールに表示されているすべてのデータがビューステートに保存されます。

これに対する解決策は、3 ページ コントロールのビューステートを明示的に「オフ」にすることです。残念ながら、これは、ページの読み込みごとにコントロールを再バインドする必要があることを意味します。

ページ番号を保存する必要があるだけの場合は、たとえば、msdnおよびpluralsightで説明されているように、それを制御状態に移動できます。

別の回答で提案されているようにクエリ文字列を使用してください。

または、引き続きビューステートを使用してから、ページ全体またはページ コントロールのみのビューステートをオフにすることもできます。

viewstate の詳細な説明については、Mrunal Brahmbhatt によるTruly Understanding Viewstateを読むことを強くお勧めします。

于 2009-01-27T09:24:20.370 に答える
2

ページ番号を ViewState に格納してもそれほど多くのスペースは必要ないため、問題の根本に取り組む必要があると思います。

ASP.Net では、ViewState は各コントロールに対して既定でオンになっています。そのため、静的テキストを含む単純なラベルは、ViewState のスペースを占有します。これをオフにすると、非常に役立ちます。

これらの 2 つの記事をチェックしてください。過去に私を大いに助けてくれました。

http://www.webreference.com/programming/asp/viewstate/ http://www.webpronews.com/expertarticles/2005/11/07/optimize-aspnet-pages-by-reducing-the-size-of-ビューステート

作業している ASP.Net のバージョンは何ですか? ASP.Net 2.0 の ViewState は 1.1 よりもはるかに小さいです。

于 2009-01-27T07:58:47.360 に答える
2

HTTP のステートレスな性質により、実際に状態を保存する場所を選択するのは困難です。あなたの例では、ビューステートの代わりに次のことを検討します。

  1. クエリ文字列- ページ番号は十分に小さく、そこにうまく収まります。
  2. Cookie - この場合、データはより長く保持され、すべての GET および POST 要求を通じて存続します。
  3. セッション- 前のオプションとほとんど同じですが、データはサーバーに保存されます。
于 2009-01-27T09:59:47.897 に答える
1

クエリ文字列で渡すのは良いオプションです。これにより、「ハッキング可能」になり、SEO に適しています。したがって、ページ番号については、URL 以外は考えません!

于 2009-01-27T07:51:01.340 に答える