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为 asvirtual可能意味着您的后代页面以某种方式覆盖它,然后不调用base( Base Page) 版本,导致脚本未注册。

于 2012-09-12T15:42:44.190 回答