2013-02-27 47 views
1

注册客户端脚本我想在定时器的Tick事件注册脚本,但什么也没发生,在定时器的Tick事件

protected void UpdateTimer_Tick(object sender, EventArgs e) 
     { 
       ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "script", "ShowDialog()", true); 
     } 

试图ScriptManager.RegisterStartupScript很好,但它不工作。尝试调用简单的警报,但不工作。

+0

你得到一个错误?你有没有进入Tick方法? – 2013-02-27 13:29:56

+0

@ToonCasteele没有错误,是的它进入Tick方法。 – Rishi 2013-02-27 13:31:14

回答

2

RegisterClientScriptBlock只有在第一次加载页面时才会起作用。在服务器上的后台线程上调用时,您不可能期望它能够工作。

您需要注册一个启动计时器客户端的客户端脚本块 - 查看javascript setTimeout。

例如在页面加载

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "script", "window.setTimeout(ShowDialog, 1000);", true); 

或带参数...

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "script", "window.setTimeout(function(){ShowDialog(arg1,arg2);}, 1000);", true); 
+0

所以现在的方式来执行一些客户端JS在tick事件中沿着C#代码? – Rishi 2013-02-27 13:33:16

+1

C#tick事件将在页面已经提交给客户端浏览器后触发,因此您不能再更改浏览器中的内容。 – 2013-02-27 13:37:08

+0

想你的方法,但有一个错误说:“ 错误:的ReferenceError:ShowDialog的是没有定义 源文件:URL行:452” – Rishi 2013-02-27 13:59:01