【发布时间】:2010-06-10 18:05:10
【问题描述】:
我有一个页面在 page_load 方法中执行长时间运行的任务(10 到 15 秒)。
我有客户端 javascript 代码,可以向用户显示一个不错的“页面加载”动画 gif。
我能够从代码隐藏调用 JavaScript 方法,以显示“页面加载”动画 gif,但是,长时间运行的任务正在挂起 UI,因此动画 gif 直到实际显示在长时间运行的任务完成后,这与我想要的完全相反。
为了测试这一点,我在 page_load 方法中调用了 JavaScript 方法来显示动画 gif。然后,我使用 Thread.Sleep(10000)。发生的情况是,动画 gif 直到 Thread.Sleep 完成后才会显示。
显然我做错了什么。
任何建议将不胜感激。
谢谢。
克里斯
下面是代码隐藏示例:
protected void Page_Load(object sender, EventArgs e)
{
ClientScript.RegisterStartupScript
(GetType(), "Javascript", "javascript: ShowWaitIndicator(); ", true);
Response.Flush();
Thread.Sleep(10000);
}
【问题讨论】:
-
您不能从代码隐藏调用 javascript。您所能做的就是将它添加到响应流中,这就是 ClientScript.RegisterStartupScript 正在做的事情。这最终将被发送回浏览器。这是两个完全不同的语境。 Codebehind 在服务器上运行,javascript 在浏览器上执行。
标签: c# asp.net javascript