为什么我们在ASP.NET中使用Session()状态而不是全局变量?有什么意义?

时间:2015-07-02 11:50:35

标签: asp.net viewstate session-state

为什么我们在ASP.NET中使用Session()状态对象来存储和检索任何用户的整个会话中的数据?为什么不使用全局变量而不是session()....类似的View()状态来存储和访问页面内任何位置的数据...为什么这个功能存在,而我们可以简单地将数据存储在一个变量中并在任何地方访问它需要?请澄清

3 个答案:

答案 0 :(得分:0)

我遇到的一个答案是,在Page PostBack发生期间,变量可能会变空,因此变量中的数据将会丢失。因此,为什么我们使用状态来访问数据。

答案 1 :(得分:0)

您可以在应用程序的任何位置使用会话值,并且可以在单个页面上使用全局变量。每当刷新页面时,全局变量的值变为空,但会话值将保持不变。

答案 2 :(得分:-1)

3个概念Session,View State和Global对象在保存和访问值方面做的工作相同。

主要区别在于说明分配给变量的值的范围。以下定义将向您解释相同的内容。

1>全局变量:全局变量的范围(通过单例模式或应用程序状态声明)具有应用程序范围。即;分配给此变量的值将在所有会话中可访问,并且在所有会话的所有时间点和所有页面中都相同。这些值存储在.NET Framework公共语言运行库中,并且在应用程序中是相同的。 例如:连接字符串,数据库名称等。

2 - ;会话状态:分配给会话状态对象的值将仅具有该会话的范围(直到您执行session.abondon)。 例如:当您登录网站时,网站可能会将您的登录ID存储在会话变量中。在您注销之前,可以在所有页面中访问此会话变量。

3>视图状态:视图状态的范围是页面和后续回发。导航到不同的页面后,值就会消失。这主要用于存储可以在回发后使用的计算值。此外,ASP.net内部使用viewstate在回发后填充控件值。 视图状态是页面级状态管理。