SCENARIO
BasePage.cs实现System.Web.UI.Page。它是一个没有aspx的超类,其中所有实际页面都是派生的。
中在BasePage中注册了一些javascriptpublic 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页面代码。但也许如果你有线索,那么我可以给你更多细节。
答案 0 :(得分:1)
最终,我的一位同事建议用form
标记包装index.aspx标记。这已经足够了,现在一切正常。
答案 1 :(得分:0)
您是否在浏览器中选中了View Source选项。它将帮助您了解脚本如何编写为最终输出。
答案 2 :(得分:0)
正如我已评论过:我认为将Page_Load
标记为virtual
可能意味着您的后代网页会以某种方式覆盖它,然后不会调用base
(Base Page
)版本,导致脚本无法注册。