C# 我对ViewState有问题

C# 我对ViewState有问题,c#,asp.net,viewstate,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

我使用viewstate的方式如下:

public bool SearchClicked 
{ 
    get { return  Session["bool"]==null? false : (bool)Session["Bool"]; } 
    set { Session["bool"] = value; } 
}
在代码中,只要按下按钮,事件就会触发

我设定:

    SearchClicked=true;
每次发帖时,我都会检查它是否正确:

 if (SearchClicked)
{
}
当我启动站点并有回发时,该值设置为“true”


确实,在运行应用程序之前,我按下了几次将其设置为true的按钮。但每次运行应用程序时,应用程序实例都是新的。这是否意味着每次我运行应用程序时,ViewState都会重置自身,并且不会保存其类似会话的状态(20分钟)?

在上面的代码中,您不是使用ViewState来存储SearchClicked值,而是使用会话来存储它。ViewState以隐藏值的形式保留在页面上,并发回服务器。这意味着viewstate存储在浏览器上,因此只要用户在页面上,viewstate就会一直存在。会话信息存储在服务器上。用户会话最终将超时,但其他事情可能会导致会话重置,例如重建应用程序或编辑web.config文件

要存储到ViewState,请使用以下命令

public bool SearchClicked
{
get { return  ViewState["bool"] == null ? false : (bool)ViewState["bool"]; }
set { ViewState["bool"] = value; }
}
viewstate在发回时处理页面的“状态”,不多也不少。它实际上与应用程序没有多大关系;它的目的很简单

我发现这篇文章在我之前的.NET学习中非常有用:
(特别是“视图状态的角色”一节)

基本上,视图状态是以加密形式存储值的隐藏字段。因此,它将在同一页上从回发到回发保存数据。但是,一旦您离开页面并返回,它就会被重置。没有像会话中那样的超时。它们是两个完全不同的概念。是的,因为ViewState属性存储在页面中的一个隐藏表单字段中。应用程序正在运行时,它将在页面生命期内保留数据,会话状态在服务器端管理,而在客户端管理,因此它们完全不同。+用于显示存储机制的差异。我阅读了它昨天viewstate在保存字典时如何执行。有什么问题吗?在viewstate中存储字典不会有任何问题。请注意,在viewstate中存储大量数据将导致页面性能不佳。在决定在页面的viewstate中存储什么时,请考虑这一点。