在代码隐藏中注册Javascript块:RegisterClientScriptBlock问题

时间:2012-09-12 15:23:49

标签: c# javascript asp.net

SCENARIO

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()方法相关的特定问题?

REMARK

很抱歉,我不允许发布整个index.aspx页面代码。但也许如果你有线索,那么我可以给你更多细节。

3 个答案:

答案 0 :(得分:1)

最终,我的一位同事建议用form标记包装index.aspx标记。这已经足够了,现在一切正常。

答案 1 :(得分:0)

您是否在浏览器中选中了View Source选项。它将帮助您了解脚本如何编写为最终输出。

答案 2 :(得分:0)

正如我已评论过:我认为将Page_Load标记为virtual可能意味着您的后代网页会以某种方式覆盖它,然后不会调用baseBase Page)版本,导致脚本无法注册。