在哪里存储公共数据以在页面之间共享

时间:2011-03-14 14:18:11

标签: c# asp.net caching session

我有一个有3个用户控件的页面。我希望在这些用户控件之间共享来自数据库的一些数据。实际上我应该保存它。我现在使用静态类来存储它。我不认为这是个好主意。
这些数据实际上取决于第一个用户控件。因此,如果用户对第一个usercontrol控件进行了任何更改,那么我将再次从数据库中获取这些数据。

我不确定我应该在哪里存储这些数据。我应该使用会话还是静态类?

5 个答案:

答案 0 :(得分:2)

一种方法是将它存储在Session变量中,并通过基类中定义的属性读取/写入Session变量,所有3个控件都继承自(或者,正如您所说的,它们都是静态类)进入)。

查看this answer以获取如何定义对Session变量进行读/写的属性的示例。

答案 1 :(得分:1)

如果您想要共享较长时间的数据,则将其保存到数据库并从相关页面调用它是好的。特别是如果他们可能决定离开/退出,然后到达最后一页,否则会保存它。

如果您只是在页面之间保存它,之后不需要保留它,使用Session肯定是有效的。

答案 2 :(得分:1)

这2个选项的范围不同。

当用户在Web应用程序中导航ASP.NET页面时,会话保留用户的数据。

静态类保留Web应用程序的所有实时数据(任何用户,任何会话)

答案 3 :(得分:1)

ASP.NET根据您的要求提供不同的状态管理方法。

静态类是一个坏主意,因为所有访问者都会看到相同的数据。

您可以在最适合您任务的选择中获得有关州here的其他信息。

答案 4 :(得分:1)

您的选择是:

  • Viewstate [范围是页面,数据 幸存后背]
  • 会话[范围是 客户端会话,数据存活 跨页]
  • Applicationstate [适用于全球范围]
  • 数据库和组合 以上[范围是跨客户的 会话]

由于已经提到的原因,静态类不是一个好主意。

请参阅Maintain state of an asp.net page