5

このコーディング例のように、WebフォームのPage_Loadサブルーチンで常に.IsPostBackを使用するのは「ベストプラクティス」ですか?

この質問をしても大丈夫だと思います。そうでない場合は、すぐに質問を削除します。

基本的に、私はあなたのほとんどがコーディングしている方法でコーディングしたいと思います。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If Not Page.IsPostBack Then

        ' More coding will go here.
        '--------------------------
    End If

使い方の長所と短所を教えてください。

4

3 に答える 3

10

これは「ベストプラクティス」の場合ではなく、使用する必要があるかどうかの場合です。

それは本当です、あなたは通常それを入れるでしょうIsPostBackPage_Loadしかしあなたはそれを-に入れることもできますPage_Init-基本的にはレンダリングする前に発生するページイベントのいずれかでHTML

基本的に、このコマンドを使用して、ページがそれ自体にポストバックしたときに本文のコードが起動しないようにします。フォーム送信やAutoPostBackサーバーコントロールなどDropDownList

少なくとも私が考えることができるのは、賛否両論はありません。それが必要な場合とそうでない場合。

理想的に必要な場合の例は、データベースからデータを1回だけ取得し、それをにバインドすることDropDownListです。このデータは、ポストバック時にビューステートで利用できるようになります。したがって、ポストバック時にデータベースに再度アクセスする必要はありません。

コードを挿入しない場合の例としては、などのイベントハンドラーclickが同時に追加されたサーバーコントロール(ボタンなど)を生成する場合があります。イベントハンドラーを使用できるようにするには、ポストバック時にこれを再生成する必要があります。

于 2012-11-30T19:36:46.943 に答える
4

利点は、高価な操作を1回だけ実行できることです。gridViewへのバインド...など。

ほとんどの場合、更新中に実行したくないものです。

于 2012-11-30T19:36:40.433 に答える
1

それは常にあなたが最適化したいものに依存します。初期化コードに時間がかかる場合は、最初にのみ実行し、ViewStateを使用してコントロールを初期化することをお勧めします。次に、を使用しますIf Not IsPostBack

ただし、帯域幅がより重要なモバイルデバイスをターゲットにする場合は、ViewStateをオフにして、ポストバックでデータを再度初期化することができます(キャッシュまたはSessionStateから読み取ることができます)。常にViewStateを監視してください。20kByte以上のViewStateのページを見たことがあります。

長所:

  • 初期化のオーバーヘッドが少ない(データベースへのアクセスなど)
  • サーバー上のメモリが少ない(セッションまたはキャッシュ)

対照:

  • ViewStateのより多くの帯域幅
于 2012-11-30T21:16:12.697 に答える