情况如下:我有一个按钮,当我单击它时,它将执行一些语句,我希望它显示一些状态消息。
protected void Button1_Click(object sender, EventArgs e)
{
//executes some statements
//shows some status message like "Done"
}
我想过使用标签文本来显示不同的状态消息,但标签文本仅在方法完成时显示最后一条状态消息。它不显示中间状态消息....我做错了什么?
您还可以使用文字,它也允许一些格式
<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";
}
ASP.Net 无法按照您尝试的方式工作。整个方法将完成(将标签更新为一个且只有一个最终值),然后渲染页面(使用标签的最终值。)
我可以想到两种方法来做你正在寻找的东西:
1)编写一堆Web服务方法并用ajax调用每个方法。在每次 ajax 调用后更新客户端的标签 (div)。
2) 页面呈现后立即重新提交页面(当前操作完成)。您仍然需要保持页面状态以了解您当前在进程中的位置(例如 4 个操作中的 2 个)(增加隐藏的表单变量或会话变量,然后在页面加载中使用该变量的值决定如果发生什么情况IsPostback。)
或者尝试这样做:
Label1.Text = "First Status";
// Do something
Label1.Text += "\nSecond Status";
// Do something again
Label1.Text += "\nDone!!";
如果您想为此显示所有状态。您可以使用其他控件(例如Listbox)来处理将在每次执行中调用的状态数组/列表。
尝试
Label1.Text="starting stuff";
this.refresh();
//do stuff
Label2.Text="finishing stuff";
this.refresh() 导致屏幕在方法的中间重新绘制,而不是在默认情况下在末尾重新绘制。