pageLoad()
ポストバック/非同期ポストバックのため、またはロードされて初めてアクセスしたために、ロードイベント中にこのメソッドが発生したかどうかを確認する方法を探しています。
Page.IsPostback
これは、コード ビハインド ページ内のプロパティに似ています。
ティア、リッキー
pageLoad()
ポストバック/非同期ポストバックのため、またはロードされて初めてアクセスしたために、ロードイベント中にこのメソッドが発生したかどうかを確認する方法を探しています。
Page.IsPostback
これは、コード ビハインド ページ内のプロパティに似ています。
ティア、リッキー
これを行う 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 が呼び出される前の最後の処理である必要があります。
@ダレン:答えてくれてありがとう。イベント引数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) から呼び出せるプロパティを探しています。
ポストバック/コールバックの場合、サーバー側で既知の値に設定した非表示の入力を持つことができ、JavaScript でその値をチェックできます。
そうは言っても、これに対するクライアントのみのソリューションがあることを本当に願っています。
編集: @mmattax - 彼はクライアント側のソリューションを探していると思います - JavaScript に相当します。
できることは、Sys.Applicationクラスの load イベントに接続することです。その後、 Sys.ApplicationLoadEventArgsクラスの isPartialLoad プロパティを使用できます。非同期ポストバックにいるかどうかがわかると思います。
ポストバックしているかどうかを知るには、サーバー側のコードでそれを処理し、それをクライアントに送信する必要があります。
コードを最初のロードでのみ実行する場合は、Application.Initを使用する方が適切なイベントです。
非同期呼び出し中に Page.IsPostback を引き続き使用できます。
@Dave Ward: これは通常動作します。ただし、コードは動作オブジェクトにイベントを添付することです。動作オブジェクトの作成は Application.Init 中に発生するため、そのイベントにアタッチすると予期しない動作が発生します。
PostInit イベントがあればいいですね。
@Dave Ward: RunOnce メソッドの使用は完全に機能します。これにより、イベントにアタッチする前にハンドラーが既に存在するかどうかを最初に確認する回避策がなくても問題が解決します。
あなたの回答を承認済みの回答としてマークします。再度、感謝します。
これは、私たちがしばらく使用してきた 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;
}