![](/img/trans.png)
[英]Broadcast a message to 25 clients from the server without any delay C# asp.net
[英]Delay display message by some time in asp.net c#
我有一個標簽,我想要的只是將標簽顯示為“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”沒有按照我的意願顯示。 我試過這些鏈接,
沒有幫助。 這將 ASP.NET 計時器控件與多個 UpdatePanel 控件一起使用似乎有效,但這會不斷刷新頁面。 我不希望這種情況發生,它應該顯示 name1 然后等待 5 秒,顯示 name2 然后停止。
您提到的更改必須在客戶端,使用 javascript setTimer 方法並將標簽更新為您需要的任何文本。
您可以在 UpdatePanel 下的頁面中使用 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";
}
}
您無法像在 ASP.NET 中那樣處理此問題,因為您將始終從 form_load 事件中獲得最終結果。 您將不得不使用JavaScript 計時事件在客戶端處理此問題。
<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>
正如其他貢獻者所建議的那樣,您應該使用客戶端代碼來獲得這種行為。 在您的代碼示例中, Page_Load
函數只需 5 秒即可執行,當服務器上的所有處理完成后,生成的 HTML 最終會發送到瀏覽器……您會看到“name2”。
這是客戶端代碼的 jQuery 版本:
$(document).ready(function () {
$('#Label1').html("name1");
setTimeout(function () { $('#Label1').html("name2"); }, 5000);
})
這是一個純 Javascript 版本:
var lbl1 = document.getElementById('Label1');
lbl1.innerHTML = "name1";
setTimeout(function () { lbl1.innerHTML = "name2" }, 5000);
如果 Label 的 ID 被 ASP.NET 弄亂了,您可以在客戶端代碼中使用<%= Label1.ClientID %>
而不是Label1
。
這可以僅使用提供的內容來完成,它應該運行一次,所以一旦滴答完成,我們就禁用計時器。
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.