我希望在asp.net postback后使用ajax执行javascript函数。在没有Ajax的情况下执行asp.net postback后执行javascript函数
我试着在我的方法,甚至没有运气以下:
Page.ClientScript.RegisterStartupScript(GetType(), "ShowPopup", "showCheckOutPopIn('Livraison',556);");
我希望在asp.net postback后使用ajax执行javascript函数。在没有Ajax的情况下执行asp.net postback后执行javascript函数
我试着在我的方法,甚至没有运气以下:
Page.ClientScript.RegisterStartupScript(GetType(), "ShowPopup", "showCheckOutPopIn('Livraison',556);");
你还是使用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);
我不记得什么副手对于Page.ClientScript东西的确切语法/用法......看起来像它应该正常工作。但是,如果推动推动,只需要一个简单的用户控件,您可以动态启用/禁用,它将在回发后在脚本块中写出JavaScript方法。当页面加载时,这个脚本执行你希望执行的任何功能。
当然,问题是,这个javascript应该做什么,你不能通过一些属性或其他设置来反映在标记中的服务器端?
解决方案
我需要使用以下过载添加脚本标签。
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "script", "alert('Success!');", true);
此人有同样的问题,我觉得和他的解决方案为我工作太:
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);
Web窗体:
Page.ClientScript.RegisterClientScriptBlock(GetType(), "MEssage",
"$(document).ready(function() {
ShowMessage('{0}');", true);
好问题,我发现的RegisterStartupScript是在次痛苦! – 2008-11-26 15:11:06
我完全同意 – 2009-10-13 09:08:37
这应该工作,它是否将脚本写入页面?使用Firefox的Firebug来调试你的js并在它上面粘贴一些断点 – 2008-11-26 15:09:41