10

pageLoad()ポストバック/非同期ポストバックのため、またはロードされて初めてア​​クセスしたために、ロードイベント中にこのメソッドが発生したかどうかを確認する方法を探しています。

Page.IsPostbackこれは、コード ビハインド ページ内のプロパティに似ています。

ティア、リッキー

4

9 に答える 9

6

これを行う 1 つの方法は、Application.Init で Application.Load ハンドラーを接続し、実行後にそのハンドラー自体をバインド解除することです。

Sys.Application.add_init(AppInit);

function AppInit() {
  Sys.Application.add_load(RunOnce);
}

function RunOnce() {
  // This will only happen once per GET request to the page.

  Sys.Application.remove_load(RunOnce);
}

これは Application.Init の後に実行されます。これは、pageLoad が呼び出される前の最後の処理である必要があります。

于 2008-09-05T03:29:49.690 に答える
4

@ダレン:答えてくれてありがとう。イベント引数ApplicationLoadEventArgsをパラメーターとしてpageLoad を作成しようとしました(以下を参照)。ただし、これによると:

load イベントは、サーバーへのすべてのポストバック (非同期ポストバックを含む) に対して発生します。

ご指摘のとおり、 isPartialLoad プロパティはすべてのポストバック シナリオをカバーしているわけではありません。event 引数にも isPostback プロパティが含まれていると便利です。

   function pageLoad(sender, arg) {
      if (!arg.get_isPartialLoad()) {
          //code to be executed only on the first load
      }
   }

@mmattax: クライアント側 (javascript) から呼び出せるプロパティを探しています。

于 2008-09-03T00:44:21.290 に答える
2

ポストバック/コールバックの場合、サーバー側で既知の値に設定した非表示の入力を持つことができ、JavaScript でその値をチェックできます。

そうは言っても、これに対するクライアントのみのソリューションがあることを本当に願っています。

編集: @mmattax - 彼はクライアント側のソリューションを探していると思います - JavaScript に相当します。

于 2008-09-02T23:40:25.467 に答える
2

できることは、Sys.Applicationクラスの load イベントに接続することです。その後、 Sys.ApplicationLoadEventArgsクラスの isPartialLoad プロパティを使用できます。非同期ポストバックにいるかどうかがわかると思います。

ポストバックしているかどうかを知るには、サーバー側のコードでそれを処理し、それをクライアントに送信する必要があります。

于 2008-09-02T23:43:30.530 に答える
0

コードを最初のロードでのみ実行する場合は、Application.Initを使用する方が適切なイベントです。

于 2008-09-04T23:52:55.110 に答える
0

非同期呼び出し中に Page.IsPostback を引き続き使用できます。

于 2008-09-03T00:14:54.840 に答える
0

@Dave Ward: これは通常動作します。ただし、コードは動作オブジェクトにイベントを添付することです。動作オブジェクトの作成は Application.Init 中に発生するため、そのイベントにアタッチすると予期しない動作が発生します。

PostInit イベントがあればいいですね。

于 2008-09-05T02:12:21.577 に答える
0

@Dave Ward: RunOnce メソッドの使用は完全に機能します。これにより、イベントにアタッチする前にハンドラーが既に存在するかどうかを最初に確認する回避策がなくても問題が解決します。

あなたの回答を承認済みの回答としてマークします。再度、感謝します。

于 2008-09-05T17:05:12.380 に答える
0

これは、私たちがしばらく使用してきた isPostback に相当する Ajax です。

public static bool isAjaxRequest(System.Web.HttpRequest request)
    {//Checks to see if the request is an Ajax request
        if (request.ServerVariables["HTTP_X_MICROSOFTAJAX"] != null ||
            request.Form["__CALLBACKID"] != null)
            return true;
        else
            return false;
    }
于 2008-09-16T18:09:24.990 に答える