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 では、サーバーへの各要求がページ クラスをインスタンス化 (新規) するため、2 回目のページ読み込みでは、最初の要求で持っていたオブジェクトではなく、新しいオブジェクトが取得されます。

すべてのユーザー間で共有されている場合はアプリケーション状態ディクショナリに、そうでない場合はセッション状態ディクショナリにデータを保存できます。

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

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