【发布时间】:2011-07-25 19:07:03
【问题描述】:
ASP.NET 4.0 网络表单网站
母版页: 左侧面板(导航菜单目的):使用UpdatePanel Control(AJAX),因此在选择新菜单时,整页将无法重新加载。只会更新内容部分。
我的问题是——我希望能够使用浏览器后退按钮返回上一个菜单(保存表单状态)。但是,当查看视图状态时,它总是相同的。有没有办法做到这一点?谢谢。
【问题讨论】:
ASP.NET 4.0 网络表单网站
母版页: 左侧面板(导航菜单目的):使用UpdatePanel Control(AJAX),因此在选择新菜单时,整页将无法重新加载。只会更新内容部分。
我的问题是——我希望能够使用浏览器后退按钮返回上一个菜单(保存表单状态)。但是,当查看视图状态时,它总是相同的。有没有办法做到这一点?谢谢。
【问题讨论】:
我想一种解决方法是,当用户从菜单中选择一个菜单项时,将该选择放入会话变量和页面加载中。然后当用户点击浏览器后退按钮时,您可以在页面加载中设置菜单,因为您的会话变量中有值。
【讨论】:
pst 指的是“跨页发帖”。
在您的源页面上,您需要将 asp 按钮的 postbackurl 设置为您的目标页面 url。
在目标页面 c# onload 方法中,将 page.previouspage 设置为您的源页面。检查上一页的帖子是否为跨页帖子。
如果为 true,则获取 zource 页面的视图状态。
如何从目标页面访问源页面的视图状态?在转到目标页面之前,将源页面的视图状态保存在源页面中。将视图状态保存在源页面上的 asp 隐藏变量中,然后使用 previouspage.findcontrol("variable name") 在目标页面中获取它。
获取源页面的viewstate后,保存在目标页面的一个asp隐藏变量中。
当你想返回源页面时,你会在某种程度上反过来做上面的所有事情。
“返回上一页”链接按钮将使用源页面 url 作为 postbackurl 值。
在源页面的onload c#方法中,将page.previouspage url设置为目标页面的url。检查上一页的帖子是否为跨页帖子。
如果为true,则在源页面中(从目标页面返回后)使用previouspage.findcontrol("savedSourcePageViewstate") 获取源页面的已保存视图状态。
我还不确定如何将源页面的视图状态更改为保存的视图状态。您实际上可能必须在目标页面的 backttopreviouspage 按钮的单击处理程序中执行此操作。
我现在正在一个项目中开发这个过程。
当我得到它的工作时,我将为此创建一个完整的演练,带有代码示例,并在此处发布演练的链接。
但是,我已经完成了从目标页面中的源页面获取数据的跨页面发布过程。
它是安全的,是我在 asp.net webforms 应用程序中从一个页面到另一个页面获取数据的最佳方法。
【讨论】: