我像这样使用viewstate:
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分钟)吗?
答案 0 :(得分:12)
在上面的代码中,您没有使用ViewState来存储SearchClicked值,而是使用Session来存储它。 ViewState以隐藏值的形式保留在页面上,并返回到服务器。这意味着视图状态存储在浏览器中,只要用户在页面上,它就会持续存在。会话信息存储在服务器上。用户会话最终会超时,但其他事情可能导致会话重置,例如重建应用程序或编辑web.config文件。
要存储到ViewState,请使用以下
public bool SearchClicked
{
get { return ViewState["bool"] == null ? false : (bool)ViewState["bool"]; }
set { ViewState["bool"] = value; }
}
答案 1 :(得分:0)
viewstate在回发时处理页面的“状态”,无论是更多还是更少。它与应用程序没什么关系;它的目的很简单。
我在.NET学习的早期发现这篇文章非常有用: Understanding ASP.NET View State (特别是“观点状态的作用”一节)