1

Web サイトのあるページから別のページにカスタム オブジェクトを渡そうとすると、イライラする問題が発生します。ページ 2 のセッションからオブジェクトを使用しようとすると、null になります。大規模なソリューションからコードを取り出して単独で実行すると、問題なく動作するため、構文は正しいと思います。

Visual Studio、aspx ファイル、プロジェクト プロパティに、このセッション オブジェクトが機能しない原因となっている設定がプロジェクトに設定されている可能性があるかどうか疑問に思っています。

私が使用している簡略化された構文は次のとおりです。1ページ目

Person p = new Person;
p.name = "john"; 
p.secondName = "doe";
Session["person"] = p.
Response.Redirect("Page2.aspx")

ページ 2 オン ページ ロード メソッド

Person p = (person)Session["person"]
textbox1.Text = p.name;
textbox2.Text = p.Secondname;

私が言ったように、このコードはそれ自体で問題なく動作しますが、私のより大きな作品プロジェクトの一部としては機能しません。これが機能しない理由についてのアイデアは大歓迎です

4

3 に答える 3

2

3 つのオプションがあります。

1 つ目は、より大きなプロジェクト内でセッション状態が無効になっていることです。詳細については、Active Server Pages と IIS で ASP セッション状態をオフにするを参照してください。

2 番目のオプションは、アプリケーション内のどこか (別のスレッド) で例外が発生し、アプリケーションが再起動してセッション状態が失われることです。これは、次のように Global.asax 内のアプリケーション エラーにフックすることで確認できます。

    void Application_Error(object sender, EventArgs e)
    {
        Exception ex = Server.GetLastError();
    }

最後のオプションは、session["person"] 値が他のモジュールまたはページで変更されることです。

于 2012-12-16T17:41:24.750 に答える
0

データベースが接続されている場合は、コードに従って参照してください。次に、必要に応じて、page1 でやりたいことを何でもして、単一または複数のテーブルで db に保存することをお勧めします。これで、ID がクエリ文字列として page2 に渡されます。フォーマットは次のようになります

Response.Redirect("~/page2.aspx?id=67"); は、データベースからの動的な一意の ID です。次に、渡した ID に対する 2.aspx クエリのページに進みます。

于 2012-12-16T19:14:19.293 に答える
0

でコードを試してください、

Response.Redirect("Page2.aspx", false);
于 2012-12-16T17:33:15.373 に答える