我的ViewState有问题

时间:2011-06-19 04:20:06

标签: c# asp.net viewstate

我像这样使用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分钟)吗?

2 个答案:

答案 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 (特别是“观点状态的作用”一节)