在没有Ajax的asp.net回发之后执行javascript函数

我希望在asp.net回发之后执行一个javascript函数,而不使用ajax。

我在偶数方法中尝试了以下方法但没有运气:

Page.ClientScript.RegisterStartupScript(GetType(), "ShowPopup", "showCheckOutPopIn('Livraison',556);"); 

您应该使用ScriptManager类,因为不推荐使用Page.ClientScript属性…

ClientScriptManager类是ASP.NET 2.0中的新增类,它取代了Page类方法,用于管理现已弃用的脚本。
参考:MSDN – Page.ClientScript属性

ScriptManager的优点在于它适用于异步回发,因此如果您使用的是AJAX,它将无法与ClientScriptManager一起使用。

你的代码看起来像这样:

 ScriptManager.RegisterStartupScript(this, this.GetType(), "ShowPopup", "showCheckOutPopIn('Livraison',556);", true); 

另请注意,如果您使用的是AJAX并且有一段javascript代码,您希望在多个回发上执行,那么您应该在第一个参数中引用您的UpdatePanel,例如:

 ScriptManager.RegisterStartupScript(MainUpdatePanel, typeof(string), "ShowPopup", "showCheckOutPopIn('Livraison',556);", true); 

我需要使用以下重载添加脚本标记。

 Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "script", "alert('Success!');", true); 

发现: Re:回发后执行javascript

我不记得Page.ClientScript内容的确切语法/用法是什么……看起来它应该随意工作。 但是如果推动推进,只需要一个简单的用户控件,你可以动态启用/禁用,这将在回发后在脚本块中写出一个javascript方法。 页面加载时,此脚本会执行您希望执行的任何function。

当然,问题是,这个javascript应该做什么,你不能只在服务器端通过一些属性或其他设置反映在标记?

这个人我有同样的问题,他也为我解决了这个问题:

http://forums.asp.net/t/1121450.aspx?HOW+TO+run+javascript+on+each+partial+postback+

而解决方案就是使用ScriptManager类函数: ScriptManager.RegisterStartupScript(this, typeof(Sections), "Initialize", "initialize();", true);

也许迟到但你可以像这样使用

母版页:

  ScriptManager.RegisterStartupScript(this, typeof(Page), "ShowRegister", string.Format(@"$( document ).ready(function() {{ShowErrorMessage('{0}');}});", message), true);true); 

网页表格:

  Page.ClientScript.RegisterClientScriptBlock(GetType(), "MEssage", "$( document ).ready(function() { ShowMessage('{0}');", true);