【发布时间】:2011-06-19 13:16:31
【问题描述】:
我像这样使用视图状态:
public bool SearchClicked
{
get { return Session["bool"]==null? false : (bool)Session["Bool"]; }
set { Session["bool"] = value; }
}
在代码中,只要按下按钮,就会触发事件。
我设置了:
SearchClicked=true;
每次回复我都会检查它是否真实:
if (SearchClicked)
{
}
当我启动站点并且有回发时,该值设置为“true”。
确实,在我运行应用程序之前,我按下了几次将其设置为 true 的按钮。但是每次我运行应用程序时,应用程序实例都是新的。这是否意味着每次我运行应用程序时 ViewState 都会自行重置,并且不会像 Session(20 分钟)那样保存其状态?
【问题讨论】:
-
ViewState,在基本术语中,是一个以加密形式存储值的隐藏字段。因此,它将在同一页面上将数据从回发持久化到回发。但是,一旦您离开页面并返回,它就会被重置。没有像 Session 那样的超时。它们是两个完全不同的概念。
-
是的,因为 ViewState 属性存储在页面中的隐藏表单字段中,当应用程序正在运行时,它将在页面生命周期内持久保存数据,并且会话状态在服务器端管理而在客户端,因此它们安静不同。