label.visible = true无法按下按钮

时间:2013-12-12 21:09:08

标签: asp.net multithreading sleep

点击一下按钮,我显示一个标签,显示消息“Please wait”,我正在做一个Thread.sleep 3秒钟,然后执行response.redirect到另一个页面。代码如下:

        lblmsg.Visible = true;

        Thread.Sleep(3000);

        Response.Redirect("demo2.aspx");

我的理解是,标签必须显示然后处理等待3秒然后重定向?让我知道为什么这不起作用,以及解决方法是什么。

1 个答案:

答案 0 :(得分:2)

这是服务器端代码,因此lblmsg.Visible = true;设置标签可见,但此标签尚未发送到浏览器,因此最终用户无法看到它。

以下是发生的事情:

  • 用户在浏览器中点击页面
  • Asp收到请求并开始运行页面代码
  • 服务器标签的可见属性设置为true
  • 服务器等待
  • 服务器将重定向消息发送回浏览器
  • 浏览器收到重定向

您可以考虑在将请求发送到服务器之前使用jQuery在浏览器端隐藏和显示消息 - 类似这样(或者用按钮替换链接):

<script>
    $(document).ready() {
        $("#someLink").click(function() {
            $("#waitMessage").show();
        });
    });
<script>

<p id="waitMessage" style="display:none;">Please wait</p>

<a id="someLink" href="pagewithwait">Do stuff</a>