編集:
開発者ツールでページを確認したところ、どちらもスクリプトブロックに関数呼び出しを含むスクリプトブロックを配置しました。マスター ページを通過するスクリプト ブロックは、フォームの上部から数行離れたページの上部にスクリプト ブロックを配置します。ページから呼び出されるものは、他のスクリプト ブロックと共にフォーム要素の末尾近くに配置されます。それが誰にとっても意味があるかどうかはわかりませんが、私には関係があるように思えました。
元の質問
各ページで ScriptManager の RegisterStartupScript メソッドを複数回使用するマルチページ アプリケーションがあります。マスター ページがあるので、名前と必要に応じて別のスクリプト テキストを受け取り、そこにスタートアップ スクリプトを登録するパブリック関数を配置することにしました。これにより、スタートアップ スクリプトのより小さく、より単純な関数呼び出しと、アクセス可能な関数呼び出しを行うことができます。マスター ページを使用するすべてのページから。関数は次のとおりです。
Public Sub RunStartupScript( ByVal name As String, ByVal Optional script As String = "")
If script = "" Then
script = name & "();"
End If
ScriptManager.RegisterStartupScript(Me, [GetType](), name, script, True)
End Sub
マスター ページの aspx にもスクリプト マネージャーがあり、この関数を使用するとスクリプトが機能して実行されますが、最初のページの読み込みのみです。以降の非同期ポストバックでは、既に実行されたスクリプトは実行されません。
Master.RunStartupScript("SomePredefinedJavaScriptFunction")
この正確な関数コードを取得して、特定のページのコード ビハインドに配置すると、問題なく動作し、ポストバックで実行されます。関数がマスター ページによって所有されている場合、これが正しく機能しないのはなぜですか?
何かご意見は?