5

更新パネルの asyncron ポスト バック中に、Page.LoadControl メソッドを使用して、ユーザー Web コントロールを使用して JavaScript コードをページにロードしようとしています。

そのシナリオ用に特別に設計されたスクリプトマネージャーのメソッドを試しましたが、JavaScript がユーザーに返されません。

私のシナリオをもう少しうまく説明するには:

マスター ページにはスクリプト マネージャーがあり、1 つのページは非同期ポスト バック中に Page.LoadControl メソッドを介してユーザー コントロールを読み込みます。カスタム コントロールは、プリレンダリング イベント ハンドラに JavaScript を挿入します。それはjsを注入するタイミングの問題ですか、それとも単にそうすることができないのでしょうか?

4

5 に答える 5

3

そのためにあなたはすることができます

string scr;
scr = "<script src='/scripts/myscript.js'></script>"
Page.ClientScript.RegisterStartupScript(GetType(Page), "key", scr, false)

HTH

于 2008-12-02T01:57:15.870 に答える
3

JavaScriptをハードコーディングせずに、ファイルからインクルードする場合は、ScriptManager.RegisterClientScriptIncludeを呼び出してから、 ScriptManager.RegisterStartupScriptで初期化関数を呼び出します。

protected void Page_Load(object sender, EventArgs e)
{
   ScriptManager.RegisterClientScriptInclude(
      this, GetType(), "formatterScript", ResolveUrl("~/js/formatter.js"));
   ScriptManager.RegisterStartupScript(
      this, GetType(), "formatTableFunction", "formatTable()", true);
}
于 2009-12-23T19:44:26.263 に答える
2

ScriptManagerクラスのRegisterStartupScriptメソッドを使用して、実行可能スクリプトを挿入できます。

public partial class WebUserControl : System.Web.UI.UserControl
{          
    protected void Page_PreRender(object sender, EventArgs e)
    {
        ScriptManager.RegisterStartupScript(this, GetType(), ClientID, "alert(1)", true);
    }
}
于 2008-11-19T20:20:59.357 に答える
2

お試しください

Page.ClientScript.RegisterStartUpScript(GetType(Page), "key", <your script here>, addSctiptTags:=true)

ユーザーコントロールでこれを行い、うまくいきます

HTH

于 2008-11-19T14:08:01.480 に答える
1

コントロールがasp.netモーダルポップアップにネストされている場合、RegisterStartupScriptをPage_PreRenderイベントに配置しても機能しない場合があります。代わりに、IsPostBack = False の場合は Page_Load に入れます。

于 2010-06-30T16:41:01.927 に答える