web-dev-qa-db-ja.com

ScriptManager.RegisterStartupScriptコードが機能しない-なぜですか?

過去にこのようなコードを使用して、asp.net Webページにアラートメッセージを正常にポップアップ表示しました。今では機能していません。理由がわかりません。

ScriptManager.RegisterStartupScript(this, typeof(Page), UniqueID, 
     "alert('This pops up')", true);

何か案は?

19
TheMoot

私の頭の上から:

  • 基本クラスではなく実際のページクラスにスクリプトをバインドするには、GetType()の代わりにtypeof(Page)を使用します。
  • Page.UniqueIDの代わりにキー定数を渡します。これは、名前付きコントロールによって使用されることになっているため、それほど意味がありません。
  • Javascriptステートメントをセミコロンで終了し、
  • PreRenderフェーズでスクリプトを登録します。

protected void Page_PreRender(object sender, EventArgs e)
{
    ScriptManager.RegisterStartupScript(this, GetType(), "YourUniqueScriptKey", 
        "alert('This pops up');", true);
}
41

このコードを試してください...

ScriptManager.RegisterClientScriptBlock(UpdatePanel1, this.GetType(), "script", "alert('Hi');", true);

どこUpdatePanel1は、ページ上のidUpdatepanelです

19
Eldhose

スクリプトを引き起こすコントロールがupdatepanel内にある場合、最初の引数にupdatepanel idを配置する必要があります。そうでない場合は、update panelの代わりにキーワード「this」を使用します

ScriptManager.RegisterStartupScript(UpdatePanel3, this.GetType(), UpdatePanel3.UniqueID, "showError();", true);
1

同様の問題に遭遇しました。しかし、この問題は、リクエストを取り込むためにページを設計した方法が原因で発生しました。すべての.jsファイルをページに適用する最後のものとして配置したため、ドキュメントの最後にあります。 .jsファイルには、私の機能がすべて含まれています。スクリプトマネージャーは、この関数を呼び出すことができるように、ロード時に呼び出される関数と共に既に存在するjsファイルを必要とするようです。これが誰にも役立つことを願っています。

0
NightDeveloper