1

シナリオ

BasePage.csはSystem.Web.UI.Pageを実装します。これは、すべての実際のページが派生するaspxのないスーパークラスです。

RegisterClientScriptBlockを使用してBasePageにJavaScriptを登録しています:

public class BasePage : System.Web.UI.Page
{

  protected virtual void Page_Load(object sender, EventArgs e)
  {
    ClientScriptManager cs = Page.ClientScript;
    Type csType = this.GetType();
    cs.RegisterClientScriptBlock(csType, "handler", @"<script language='javascript' type='text/javascript'>alert('Something stupid!');</script>");
  }
}

このスニペットをモックでテストしました。正しく機能します。次に、BasePage.csにスニペットを挿入しました。index.aspxでは、スクリプトは実行されません。ブラウザのデバッグは次のことを示しています。

  • スクリプトは登録されていません
  • コンソールエラーは表示されません

他のすべてのページでは、正しく機能します。

質問

RegisterClientScriptBlock()メソッドに関連する特定の問題はありますか?

述べる

申し訳ありませんが、index.aspxページコード全体を投稿することは許可されていません。しかし、もしあなたが手がかりを持っているなら、私はあなたにさらなる詳細を与えることができます。

4

3 に答える 3

1

最終的に、私の同僚は、index.aspxマークアップをformタグでラップすることを提案しました。それで十分で、今ではすべてが正常に機能しています。

于 2012-11-14T10:15:55.337 に答える
0

ブラウザでオプションViewSourceをチェックしましたか。スクリプトが最終出力としてどのように記述されているかを知るのに役立ちます。

于 2012-09-12T15:42:42.390 に答える
0

私がコメントしたように:あなたの子孫ページが何らかの形でそれをオーバーライドし、()バージョンを呼び出さず、スクリプトが登録されないことを意味する可能性があるとマークPage_Loadします。virtualbaseBase Page

于 2012-09-12T15:42:44.190 に答える