在page1.aspx上我有一个按钮绑在我服务器端的buttonOnClick事件上。 单击该按钮运行buttonOnClick方法,该方法生成一个对象(buttonOnclick方法的本地方法),其中包含我想要在构建新页面时使用的数据。
基本上,我想在新选项卡中打开一个新的(不同的)页面(page2.aspx),但是当这个页面加载时,我希望它根据buttonOnClick期间生成的对象的内容进行渲染。
如何正确地解决这个问题?到目前为止,我已经将URL参数传递给新的弹出窗口(page2.aspx)并且我已经构建了对象,但我宁愿正确地执行此操作并生成buttonOnclick然后在弹出窗口中加载page2.aspx基于什么是buttonOnclick方法中构建的对象。
答案 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传递给第二页。该对象需要可序列化。