在asp.net中延迟显示消息一段时间c#

时间:2016-05-27 11:41:37

标签: c# asp.net timer

我有一个标签,我想要的是,将标签显示为" name1"然后等待5秒钟,然后将其更改为" name2"。这就是我做的那个

protected void Page_Load(object sender, EventArgs e)
{
   Label1.Text = "name1";
   System.Threading.Thread.Sleep(5000);
   Label1.Text = "name2";
}

它的作用是总共等待5秒钟然后显示" name2"。 " NAME1"没有像我希望的那样展示。我试过这些链接,

How do I get my C# program to sleep for 50 msec?

How to trigger a timer tick programmatically?

没有帮助。这个Using the ASP.NET Timer Control with Multiple UpdatePanel Controls似乎有用,但这会继续刷新页面。我不希望这种情况发生,它应该显示name1然后等待5秒,显示name2然后停止。

5 个答案:

答案 0 :(得分:1)

您提到的更改必须在客户端,使用javascript setTimer方法并将标签更新为您需要的任何文本。

答案 1 :(得分:0)

您可以在UpdatePanel for Async功能下的页面中使用Timer控件(以下是ASP.net中AJAX的帮助提供的链接), 然后在其事件下使用此逻辑更改标签名称:

 protected void Page_Load(object sender, EventArgs e)
 {
    Timer1.Enabled = true;
    Timer1.Interval = 5000;
 }

 protected void Timer1_Tick(object sender, EventArgs e)
 {
    if(Label1.Text == "name2")
    {
        Label1.Text = "name1";
    }
    else
    {
        Label1.Text = "name2";
    }
 }

要获得更多帮助,您可以查看herehere

答案 2 :(得分:0)

您无法按照ASP.NET中的方式处理此问题,因为您始终会从form_load事件中获得最终结果。您必须使用JavaScript timing events在客户端处理此问题。

      <script>
                $(document).ready(function(){
                 $('#label').val('label1');
                 setTimeout(SetLabel2, 5000); //wait for 5 seconds before setting the label. NOTE: This will keep on repeating until you clear the timeout
                });

                function SetLabel2(){
                  var l = $('#label).val();
                  if(l == 'label2)
                  {
                     window.clearTimeOut(); //So that this does not repeat
                  }
       </script>

答案 3 :(得分:0)

正如其他贡献者所建议的那样,您应该使用客户端代码来获取这种行为。在您的代码示例中,where parent_pk = @parent_pk or (@parent_pk IS NULL and parent_pk IS NULL) 函数只需要5秒钟即可执行,当服务器上的所有处理完成后,生成的HTML最终会被发送到浏览器......您会看到“name2”。

以下是客户端代码的jQuery版本:

Page_Load

这是一个纯粹的Javascript版本:

$(document).ready(function () {
    $('#Label1').html("name1");
    setTimeout(function () { $('#Label1').html("name2"); }, 5000);
})

如果标签的ID被ASP.NET破坏,您可以在客户端代码中使用var lbl1 = document.getElementById('Label1'); lbl1.innerHTML = "name1"; setTimeout(function () { lbl1.innerHTML = "name2" }, 5000); 而不是<%= Label1.ClientID %>

答案 4 :(得分:0)

这可以仅使用提供的内容完成,它应该运行一次,所以一旦勾选完成,我们就会禁用计时器。

protected void Page_Load(object sender, EventArgs e)
{
    Timer1.Enabled = true;
    Label1.Text = "name1";
    Timer1.Interval = 2000;
}

protected void Timer1_Tick(object sender, EventArgs e)
{
    Label1.Text = "name2";
    Timer1.Enabled = false;
}