ASP:我的数据字段为空,因为第二个Page_Load()

时间:2012-07-28 13:18:26

标签: c# asp.net

我的code_behind是:

public partial class Question2 : System.Web.UI.Page
{
    private SqlDataAdapter dataAdapter;
    private DataTable table;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            table = new DataTable();
            //And pull the data from my DB to the table
        }
    }

我打算在点击页面上的任何按钮后将我的数据('表')存储在类的字段中。我发现再次调用Page_Load()并且我的所有数据字段都已消失。他们'无效'。

我真的很困惑O_O发生了什么。我只需要存放我的桌子供以后使用。但为什么他们迷路了?什么时候丢失了?请帮忙,谢谢。

1 个答案:

答案 0 :(得分:0)

在ASP.NET中,对服务器的每个请求都将实例化(新)页面类,因此在第二页加载时,您将获得一个全新的对象,而不是第一次请求时的对象。

如果数据在所有用户之间共享,您可以将数据存储在the Application state dictionary中;如果不是,则可以the Session state dictionary存储数据。

// Store it:
Application["myTable"] = ...;

// Get it back on a new request:
DataTable table = (DataTable)Application["myTable"];