【问题标题】:ASP.NET page load and javascript set time outASP.NET 页面加载和 javascript settimeout
【发布时间】:2014-09-30 17:05:20
【问题描述】:

我有一个使用setTimeout 的javascript 函数。我的问题是我有一个 ASP.NET 页面,其中包含在功能完成之前在页面加载时执行的代码。有没有办法暂停页面加载或仅在计时器完成后才调用页面加载。 setTimeout 文件位于一个单独的 JS 文件中,而不是 asp.net 页面的一部分。

setTimeout(function () { myFunc(); }, 1000);

我知道在 MVC 中你不必处理这个。

【问题讨论】:

  • Page_Load 在客户端呈现任何内容之前在服务器端执行。您不能设置客户端等待状态来延迟创建客户端等待状态的服务器端代码。 (而在 MVC 中,您肯定必须处理客户端代码和服务器端代码的分离。)
  • 除非我对页面生命周期有误解...后面代码中的 Page_Load 将总是在文档中的 setTimeout javascript 函数准备好之前完成
  • 您可以通过使用 2 个 ASP.NET 页面来完成 setTimeout 功能。第一页使用 setTimeout 然后重定向到第二页。或者使用 AJAX 而不是第二页。
  • 加载时执行的代码在哪里?是在 .cs 文件中,还是在另一个 javascript 文件中?
  • 它不像 ASP.NET 生成页面的一部分,将其发送到客户端,然后生成另一部分....它生成整个页面并发送到客户端,此时客户端的 javascript运行页面已经加载..

标签: javascript asp.net-mvc asynchronous settimeout


【解决方案1】:

要暂停 Page_Load,请在 Page_Load 中使用 System.Threading.Thread.Sleep(1000);

除非您知道如何使用多个线程,否则我不会真的这样做。我会禁用此处找到的所有页面控件:How do I disable all controls in ASP.NET page?,然后在您希望时重新启用。

这就是说 Javascript 不能在 Page_load 之前运行。您可以在 Javascript 中执行的大多数操作都可以在 asp.net 中复制。但是您没有可见的代码,所以我无法真正假设。

【讨论】:

    【解决方案2】:

    我假设您指的是客户端 asp.net ajax pageLoad() 方法(而不是服务器端 Page_Load 方法)。 MS ajax 在任何回发或部分页面回发后查找并调用此方法。

    由于 pageLoad() 在任何回发或部分页面回发后触发,您不能延迟它。我相信您想要做的是在您的“myFunc()”方法中移动您的页面回发或部分页面回发调用,但您需要发布一个更完整的示例来说明您正在尝试做的事情。

    【讨论】:

      猜你喜欢
      • 2011-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多