在ASP.NET中将对象从一个页面传递到另一个页面

时间:2009-08-01 00:09:35

标签: asp.net

在page1.aspx上我有一个按钮绑在我服务器端的buttonOnClick事件上。 单击该按钮运行buttonOnClick方法,该方法生成一个对象(buttonOnclick方法的本地方法),其中包含我想要在构建新页面时使用的数据。

基本上,我想在新选项卡中打开一个新的(不同的)页面(page2.aspx),但是当这个页面加载时,我希望它根据buttonOnClick期间生成的对象的内容进行渲染。

如何正确地解决这个问题?到目前为止,我已经将URL参数传递给新的弹出窗口(page2.aspx)并且我已经构建了对象,但我宁愿正确地执行此操作并生成buttonOnclick然后在弹出窗口中加载page2.aspx基于什么是buttonOnclick方法中构建的对象。

3 个答案:

答案 0 :(得分:4)

将对象存储在第一页的Session中,然后在第二页上检索它。

在第一页:


Session["myobject"] = myObject;

在第二页:


MyObject object = (MyObject) Session["myobject"];

答案 1 :(得分:1)

最简单的方法是将对象存储在用户的Session中。

Session["myObject"] = myObject;

要将其删除,您需要将其强制转换为MyObject类型,因为Session缓存只是对象的哈希表。

if (Session["myObject"] != null)
{
  MyObject myobj = (MyObject)Session["myObject"];
}

您可以通过这种方式从两个页面访问它。通常,如果多个页面要访问Session中的同一个对象,我通常会将会话密钥的名称存储在一个集中位置,这样只要您决定更改它就必须更新一次。通常我会将一个资源文件添加到我的应用程序并将其放在Properties文件夹中,因此我可以这样使用它:

string key = WebApplication1.Properties.MyObjectSessionKey;
Session[key] = myObject;

答案 2 :(得分:0)

使用会话状态或将对象存储在数据库中并将id传递给第二页。该对象需要可序列化。