使用列表有问题<>在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

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在服务器上存储对象,但如果您有大型对象或大量客户端,那么它可能会降低性能。在那里你必须考虑你需要什么样的媒介。这是视图状态, 会话, 文件数据库等。