1

尝试将自定义对象从网站的一页传递到另一页时,我遇到了一个令人沮丧的问题。当我尝试使用第 2 页上会话中的对象时,它为空。我相信我的语法是正确的,因为当我将代码从较大的解决方案中取出并自行运行时,它可以正常工作。

我想知道 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

有三种可能的选择。

第一个是在您较大的项目会话状态中被禁用。有关详细信息,请访问在 Active Server Pages 和 IIS 中关闭 ASP 会话状态

第二种选择是在应用程序(单独的线程)内部某处发生异常,导致应用程序重新启动和会话状态松动。您可以通过挂钩 Global.asax 中的应用程序错误来检查这一点,如下所示:

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

最后一个选项是 session["person"] 值在其他模块或页面中更改。

于 2012-12-16T17:41:24.750 回答
0

尝试代码,

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

如果连接了数据库,请根据您的代码查看,然后我建议您在 page1 上做任何您想做的事情,并将其保存到单个或多个表中的 db 中,具体取决于要求。现在将 id 作为查询字符串复制到 page2。格式看起来像

Response.Redirect("~/page2.aspx?id=67"); 数据库中的动态唯一 ID 在哪里。现在在第 2.aspx 页上查询您传递的 id。

于 2012-12-16T19:14:19.293 回答