页面循环和viewstate问题

sam*_*uel 0 asp.net

需要有关页面生命周期的帮助.

当我有一个按钮时,它的click处理程序在ViewState中存储一个值.
单击按钮时会发生回发,但如果我尝试在pageload中读取viewstate值,则会得到错误的值.

刷新页面时,需要根据viewstate中的值显示标签.

Page_Load不是一个合适的地方.

在哪个页面事件中我应该显示此标签?

Gav*_*ler 5

所以页面加载事件流程如下:

  1. 对表单的操作会导致回发
  2. Page_Load事件
  3. 按钮单击事件
  4. 渲染/卸载事件

在步骤2中,您正在从视图状态读取变量并设置标签.在步骤3中,您将在视图状态中设置值.

正如您所观察到的那样,您正在以错误的顺序使用事件.有两种方法可以解决这个问题:将标签设置器代码放在Render/Unload事件中.另一种是重构代码,使标签通过Button Click事件而不是Page_Load事件设置; 我建议将其作为正确的行动方案.

您可能想要检查ASP.NET WebForm的"页面生命周期"是什么?更好地处理页面生命周期.


回复评论:如果要设置多个标签,您可以查看内联代码来设置标签.代码如下所示:

代码页

<asp:Label id="id1" runat="server" text="<%=Label1Text%>" />
Run Code Online (Sandbox Code Playgroud)

代码隐藏

private string m_Label1Text;
public property string Label1Text {
    get { return m_Label1Text; }
    set { m_Label1Text = value; }
}
Run Code Online (Sandbox Code Playgroud)

这样,您可以通过Label1Text属性设置文本,并在呈现时将其传输到表单.如果您需要有关内联代码的更多信息,可以在此处尝试此教程.