List<>有问题在asp.net中

时间:2014-05-30 04:34:13

标签: c# asp.net list

基本上我正在尝试使用List<>存储数据。我将定义部分放在类的顶部(在声明类之后)。但问题是,在我将一些数据放入列表后,网页似乎不断重新加载,因此数据不断被删除,因为它在重新加载时再次通过声明。无论如何定义每次重新加载列表时都不会死?

是的,我的定义是这样的......

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"));
            }
        }
    }

}

1 个答案:

答案 0 :(得分:3)

Asp.net使用HTTP协议,该协议是无状态的,并且在http请求之间不维护状态。您必须使用ViewState之类的技术来维护请求之间的状态。您可以将List对象放在ViewState中,并在需要时从ViewState中检索它。

保存List<T>ViewState 中的任何对象

ViewState["YourList"] = list;

List<T>

中检索ViewState
List<YourType> list = (List<YourType>) ViewState["YourList"];

全局变量的值丢失,因为Http是无状态协议。

  

stateless protocol (Http) 不需要HTTP服务器保留   有关每个用户的信息或状态,持续时间为多个   要求。但是,某些Web应用程序实现状态或服务器   使用例如HTTP cookie或隐藏变量的辅助会话   在网络表格中。

View state是ASP.NET页面中的存储库,可以存储在回发期间必须保留的值。页面框架使用视图状态在回发之间保持控制设置。

  • 您可以在自己的应用程序中使用视图状态来执行以下操作:

  • 在回发之间保留值,而不将其存储在会话状态或用户个人资料中。

  • 存储您定义的页面或控件属性的值。

注意:建议将大型对象放在ViewState中 ,因为它会增加页面大小并导致页面访问时间增加。 ViewState是加密,您可以通过将页面的ViewStateEncryptionMode属性设置为true进行加密。您可以阅读Securing View State了解更多详情。

您还可以使用Session在Server上存储对象,但如果您有大对象或大量客户端,则会降低性能。在那里你必须考虑你需要什么媒体。是 ViewState 会话文件还是数据库等。