标签文字不变

时间:2013-04-01 02:41:00

标签: c# asp.net

情况如下:我有一个按钮,当我点击它时,它将执行一些语句,我希望它显示一些状态消息。

 protected void Button1_Click(object sender, EventArgs e)
 {
    //executes some statements
    //shows some status message like "Done"
 }

我想过使用标签文本来显示不同的状态消息,但标签文本只显示方法完成时的最后一条状态消息。它没有显示中间状态消息....我做错了什么?

5 个答案:

答案 0 :(得分:1)

ASP.Net无法按照您尝试的方式运行。整个方法将完成(将标签更新为一个且只有一个最终值),然后渲染页面(带有标签的最终值。)

我可以想出两种方法来做你想要的事情:

1)编写一堆Web服务方法,并使用ajax调用每个方法。在每次ajax调用后更新客户端的标签(div)。

2)页面呈现后立即重新提交页面(当前操作完成)。您仍然需要保持页面状态以了解您当前在过程中的位置(例如,4个操作中的2个)(增加隐藏的表单变量或会话变量,然后在页面加载中使用该变量的值)决定IsPostback时要做什么。)

答案 1 :(得分:1)

或尝试这样做:

Label1.Text = "First Status";
// Do something
Label1.Text += "\nSecond Status";
// Do something again
Label1.Text += "\nDone!!";

答案 2 :(得分:1)

您还可以使用允许某些格式化的文字

<asp:Literal ID="ltrlMessages" runat="server"></asp:Literal>

protected void Button1_Click(object sender, EventArgs e)
{
    ltrlMessages.Text = "status message one";
    //
    //executes some statements
    //
    ltrlMessages.Text += "</br> status message two";
    //
    //some other statements
    //
    ltrlMessages.Text += "</br> status message three and so on";

}

答案 3 :(得分:0)

如果您想显示此状态的所有状态。您可以使用其他控件(例如Listbox)来处理将在每次执行中调用的数组/状态列表。

答案 4 :(得分:0)

Label1.Text="starting stuff";
this.refresh();
//do stuff
Label2.Text="finishing stuff";

this.refresh()会导致屏幕在方法中间重新绘制,而不是默认情况下在结束时重新绘制。