2008-11-26 51 views
23

我希望在asp.net postback后使用ajax执行javascript函数。在没有Ajax的情况下执行asp.net postback后执行javascript函数

我试着在我的方法,甚至没有运气以下:

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

好问题,我发现的RegisterStartupScript是在次痛苦! – 2008-11-26 15:11:06

+1

我完全同意 – 2009-10-13 09:08:37

+0

这应该工作,它是否将脚本写入页面?使用Firefox的Firebug来调试你的js并在它上面粘贴一些断点 – 2008-11-26 15:09:41

回答

46

你还是使用ScriptManager类,因为Page.ClientScript属性已受到冷落......

ClientScriptManager类在ASP.NET 2.0,并且新替换了用于管理现在不推荐使用的脚本的Page class方法。
Reference: MSDN - Page.ClientScript Property

与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); 
0

我不记得什么副手对于Page.ClientScript东西的确切语法/用法......看起来像它应该正常工作。但是,如果推动推动,只需要一个简单的用户控件,您可以动态启用/禁用,它将在回发后在脚本块中写出JavaScript方法。当页面加载时,这个脚本执行你希望执行的任何功能。

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

8

解决方案

我需要使用以下过载添加脚本标签。

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

发现:Re: execute javascript after postback

0

也许晚但你可以这样使用

母版页:

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

Web窗体:

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