我的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发生了什么。我只需要存放我的桌子供以后使用。但为什么他们迷路了?什么时候丢失了?请帮忙,谢谢。
答案 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"];