0

私の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 を返します。したがって、ポストバックごとに、カスタム スクリプト ブロックを再作成してページに再登録し、クライアントに再送信する必要があります。

カスタム スクリプト ブロックを登録し、ユーザーが関連ページにとどまっている限り、またはユーザー セッションがアクティブである限り、クライアントに存在させる方法はありますか?

前もって感謝します。

4

1 に答える 1