C# ASP.Net:如何存储集合并为不同的选项卡保留不同的值

C# ASP.Net:如何存储集合并为不同的选项卡保留不同的值,c#,asp.net,session,viewstate,static-members,C#,Asp.net,Session,Viewstate,Static Members,我使用我的UserControl在这样的对象中存储一个小集合 static ListThingCollection _mylistThingColl = new ListThingCollection (); public ListThingCollection myListThingColl { get { return _mylistThingColl ; } set { _mylistThingColl = value; } } 此集合用于填充某些字段 由于它是一个静态对

我使用我的UserControl在这样的对象中存储一个小集合

static ListThingCollection _mylistThingColl = new ListThingCollection ();
public ListThingCollection myListThingColl
{
    get { return _mylistThingColl ; }
    set { _mylistThingColl = value; }
}
此集合用于填充某些字段

由于它是一个静态对象,如果我同时在两个不同的web浏览器选项卡中使用我的网站,第一个选项卡上此对象的内容可能会更新为第二个选项卡的内容

我可以用什么来跳过这种情况


我尝试使用ViewState,但由于此集合在我的UserControl中,因此当代码返回到.aspx页面时,出于某种原因,它会抛出一篇文章,我的页面会重新加载到初始状态,并带有空白字段。我也尝试了Session,但不同选项卡的问题与aspected相同

你应该避免使用静态对象。每次请求都从数据库中获取数据是否有问题?否则,您可以考虑将其放入会话或使用一些缓存机制。@RobinNadeau,但如果我将其放入会话,当我在两个不同的选项卡中使用同一网页时,一个会话将被另一个会话更新(会话是唯一的,所有选项卡都是相同的=(,这是我的问题),因此第一个选项卡的集合将与第二个选项卡的集合相同。我假设当您放入ViewState时,它会变得太大并最终抛出?如果是这样,我曾经通过在ViewState中存储一个随机键,然后使用该随机键将信息存储在某个缓存中来解决此问题。如果'如果您对这种解决方案感兴趣,请告诉我,我可以为您编写一些示例代码。@RobinNadeau该集合只有1到10个小数据。问题是,每当我到达UserControl中的viewstate时,当代码返回主页面时,viewstate将更改为nul(认为这是预期的)最后,页面被重新加载(这不是预期的=/)在哪个事件中,您正在查看viewstate?因为viewstate在init上不可用。如果您的viewstate已填充,请检查页面加载。