我有一个使用VB codebehind的ASP.Net Web应用程序。 我需要一个已声明的List
变量在用户停留在页面上的时候保持不变,但目前每当控件向代码发送回复时,所有内容都会被清除。 我完全不了解ASP.net,所以我不知道这是否可能。 可以使用Session
变量完成吗? 在我看来,它们似乎仅限于基本类型,但我可能是错的。
我有一个使用VB codebehind的ASP.Net Web应用程序。 我需要一个已声明的List
变量在用户停留在页面上的时候保持不变,但目前每当控件向代码发送回复时,所有内容都会被清除。 我完全不了解ASP.net,所以我不知道这是否可能。 可以使用Session
变量完成吗? 在我看来,它们似乎仅限于基本类型,但我可能是错的。
了解一下ASP.NET ViewState。如果您使用它,还需要知道很多注意事项,包括页面大小膨胀和性能问题。C#代码(抱歉,我不擅长VB)如下:
List<int> MyList
{
get { return (List<int>) ViewState["mylist"]; }
set { ViewState["mylist"] = value; }
}
注意:不要忘记初始化这个变量。
关于使用会话状态的注意事项:如果用户同时打开了2个或更多窗口,这将无法工作。
private List MyList
{
get { return Session["ListKey"] as List; }
set { Session["ListKey"] = value; }
}
Session("ListOfStuff") = codeBehindList
吗? - Caleb HearthPrivate Property ChangedControls() As List(Of Control)
Get
Return DirectCast(Session("changedControls"), List(Of Control))
End Get
Set(ByVal value As List(Of Control))
Session("changedControls") = value
End Set
End Property
在页面加载时分配一个新的列表是完全没有问题的。