2011-03-30 81 views
2

ASP.NET 4.0的Webform网站返回前一页(保持视图状态)与ASP.NET UpdatePanel控件

母版页: 左侧板(导航菜单用途):使用UpdatePanel控件(AJAX),所以选择时,新的菜单,整个页面不会重新加载。只有内容部分将被更新。

我的问题是 - 我想能够使用浏览器后退按钮返回到上一个菜单(保存表格状态)。但是,在查看视图状态时,它始终是相同的。有没有办法做到这一点?谢谢。

回答

1

我想一个解决办法是,当用户从菜单中选择一个菜单项时,将该选择放入会话变量和页面加载中。然后,当用户点击浏览器后退按钮时,您可以在页面加载中设置菜单,因为您的会话变量中有值。

+0

这听起来不错。但是,是否也可以保存视图状态?所以回头时,所有的表格都会保留下来。 – Stan 2011-03-30 06:28:48

+1

@Stan;我不这么认为,但是如果你真的想存储viewstate,那么在asp.net 4.0中有一个选项,ViewState可以存储在Session State中。 – 2011-03-30 07:04:19

+0

@MuhammadAkhtar它也可以使用以前版本的ASP.NET来完成(也就是说,可以使用自定义的ViewState提供程序)。 – 2012-06-21 00:40:00

0

pst指的是“跨页面发布”。

在您的源页面上,您需要将asp按钮的postbackurl设置为您的目标页面url。

在目标页面的c#onload方法中,将page.previouspage设置为源页面。检查前一页的帖子是否是跨页面帖子。

如果为true,则获取zource页面的viewstate。

如何从目标页面访问源页面的viewstate?在转到目标页面之前,将源页面的视图状态保存在源页面中。将视图状态保存在源页面上的一个asp隐藏变量中,然后使用previouspage.findcontrol(“变量名称”)将其置于目标页面中。

获取源页面的viewstate后,将其保存在目标页面上的asp隐藏变量中。

当您想要返回到源页面时,您将以某种方式反向操作上述所有内容。

“返回上一页”链接按钮将使用postbackurl值的源页面url。

在源页面的onload c#方法中,将page.previouspage url设置为目标页面的url。检查上一页的帖子是否是跨页面帖子。

如果为true,则在源页面(从目标页面返回后)使用previouspage.findcontrol(“savedSourcePageViewstate”)来获取源页面的保存视图状态。

我不确定如何将源页面的viewstate更改为保存的viewstate。您可能实际上必须在目标页面的backttopreviouspage按钮的点击处理程序中执行此操作。

我正在开发这个过程,现在正在开发一个项目。

当我得到它的工作时,我将使用代码示例为此创建一个完整的演练,并将链接发布到此处。

但是,我已经开始从目标页面中的源页面获取数据的跨页面发布过程。

它是安全的,并且是我遇到过从asp.net webforms应用程序中获取数据从一个页面到另一个页面的最佳方法。