使用列表有问题<>在asp.net
本文关键字:asp net 列表 有问题 | 更新日期: 2023-09-27 18:05:46
基本上我试图使用列表<>来存储数据。我把定义部分放在类的顶部(就在声明类之后)。但问题是,我在列表中放入一些数据后,网页似乎一直在重新加载,所以数据一直在被删除,因为它在重新加载时再次经过声明。是否有办法定义列表不会在每次重新加载时死亡?
是的,我是这样定义的…
public partial class WebForm1 : System.Web.UI.Page
{
DateTime SelectedDate = DateTime.Today;
List<appointment> AppointmentList;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack && !IsCallback)
{
AppointmentList = new List<appointment>();
DateTextBox.Text = SelectedDate.ToShortDateString();
for (int x = 0; x <= 23; x++)
{
TimeSpan Hour = new TimeSpan((x * 1), 0, 0);
StartTimeList.Items.Add(Hour.ToString(@"h':mm"));
EndTimeList.Items.Add(Hour.ToString(@"h':mm"));
}
}
}
}
Asp.net使用的HTTP协议是无状态的,HTTP请求之间不维护状态。您必须使用诸如ViewState
之类的技术来维护请求之间的状态。您可以将List对象放在ViewState
中,并在需要时从ViewState中检索它。
保存List<T>
或ViewState
中的任何对象
ViewState["YourList"] = list;
从ViewState
中检索List<T>
List<YourType> list = (List<YourType>) ViewState["YourList"];
全局变量的值会丢失,因为Http是无状态协议。
一个无状态协议(Http)不需要Http服务器保留每个用户的信息或状态,持续时间为多个请求。然而,一些web应用程序实现状态或服务器使用HTTP cookie或隐藏变量的会话在web表单中。
viewstate 是ASP中的存储库。. NET页,该页可以存储回发期间必须保留的值。页面框架使用viewstate在回发之间持久化控件设置。
你可以在自己的应用程序中使用viewstate来做以下事情:
在回发之间保留值,而不将其存储在会话状态或用户配置文件中。
存储您定义的页面或控件属性的值。
注意:不建议在ViewState中放置大型对象,因为它会增加页面大小并导致页面访问时间增加。ViewState是不是加密,你可以加密设置页面的ViewStateEncryptionMode属性为true
。有关详细信息,请参阅保护视图状态。
您也可以使用Session
在服务器上存储对象,但如果您有大型对象或大量客户端,那么它可能会降低性能。在那里你必须考虑你需要什么样的媒介。这是视图状态, 会话, 文件或数据库等。