0

我的代码隐藏是:

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。我只需要存储我的表以供以后使用。但是为什么他们会迷路?什么时候丢的?请帮忙,谢谢。

4

1 回答 1

0

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

如果数据在所有用户之间共享,您可以将数据存储在应用程序状态字典中,如果不是,则可以将数据存储在会话状态字典中。

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

// Get it back on a new request:
DataTable table = (DataTable)Application["myTable"];
于 2012-07-28T13:21:16.743 回答