RegisterStartupScript不再适用于asp.net

时间:2011-09-14 14:42:23

标签: javascript asp.net ajax webforms

主要是我的网站正在使用ajax,但是如果我需要在页面加载时发送消息,我希望它与其他地方的样式相同,所以我在我的母版页上使用以下方法:

public void showWarning(String message)
{
    Page.ClientScript.RegisterStartupScript(this.GetType(),"svrShowWarning","showWarning('" + message + "');",true);
}

这工作正常,但最近它已停止工作(我不知道确切的时间。)

服务器根本无法将脚本放在页面上 - 在Web浏览器中查看页面源代码,我可以看到该脚本不存在。

之前,我有一个带有runat=server标签的表单,其中包含了我母版页上的所有内容,但我把它拿出来了。我想知道这可能是原因吗?

在所有内容加载后,有什么方法可以在我的页面上启动这样的简单javascript?

2 个答案:

答案 0 :(得分:2)

由于ASP.NET Webforms需要具有runat=server属性的表单才能正常工作,这可能是原因。

看一下documentation,它说在脚本之前添加了脚本  元件

所以你可能需要这种形式。

关于在加载所有内容后运行脚本,您可以在窗口对象的onload事件中触发它:

public void showWarning(String message)
{
    string script = "window.onLoad(function(){showWarning('" + message + "');});";
    Page.ClientScript.RegisterStartupScript(this.GetType(),"svrShowWarning",script",true);
}

如果您在页面上使用jQuery,则可以使用

string script = "$(document).ready(function(){showWarning('" + message + "');});";

代替

答案 1 :(得分:2)

使用Ajax,建议使用ScriptManager注册脚本:

ScriptManager.RegisterStartupScript(Page, GetType(),
       "svrShowWarning","showWarning('" + message + "');",true);