私のasp.net Webサイトでは、スクリプトのカスタム部分を実際に追加するか、jsファイルを登録する前に、次の方法を定期的に使用しています。
IsClientScriptBlockRegistered(Type, String)
IsClientScriptIncludeRegistered(Type, String)
ページにカスタム スクリプトが必要な場合、PageLoad 中のどこかで呼び出し、IsClientScriptBlockRegisterd()
その後にRegisterClientScriptBlock()
.
if (!Page.ClientScript.IsClientScriptBlockRegistered(typeof(Page), "myKey"))
{
// Start creating ScriptBlock //
// .. //
// Actually Register the script //
ToolkitScriptManager.RegisterClientScriptBlock(this, typeof(Page), "myKey",
sbScript.ToString(), false);
}
上記のコードは、ポストバック中に常に 1 回呼び出されます。
ユーザーが関連ページにいるとき、そのページにとどまっている間、複数のポストバック (コールバックではなく実際のポストバック) を引き起こす可能性があります。ポストバック中、GetRegisteredClientScriptBlocks
メソッドは常に空のコレクションを返します。したがってIsClientScriptBlockRegistered
、常に false を返します。したがって、ポストバックごとに、カスタム スクリプト ブロックを再作成してページに再登録し、クライアントに再送信する必要があります。
カスタム スクリプト ブロックを登録し、ユーザーが関連ページにとどまっている限り、またはユーザー セッションがアクティブである限り、クライアントに存在させる方法はありますか?
前もって感謝します。