【问题标题】:Go back previous page (keep viewstate) with ASP.NET UpdatePanel control使用 ASP.NET UpdatePanel 控件返回上一页(保持视图状态)
【发布时间】:2011-07-25 19:07:03
【问题描述】:

ASP.NET 4.0 网络表单网站

母版页: 左侧面板(导航菜单目的):使用UpdatePanel Control(AJAX),因此在选择新菜单时,整页将无法重新加载。只会更新内容部分。

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

【问题讨论】:

    标签: asp.net ajax webforms


    【解决方案1】:

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

    【讨论】:

    • 这听起来不错。但是,是否也可以保存视图状态?因此,当返回时,所有形式都会保留。
    • @Stan;我不这么认为,但是如果你真的想存储viewstate,在asp.net 4.0中有一个选项,Viewstate可以存储在Session State中。
    • @MuhammadAkhtar 也可以使用以前版本的 ASP.NET 来完成(即可以使用自定义 ViewState 提供程序)。
    【解决方案2】:

    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 应用程序中从一个页面到另一个页面获取数据的最佳方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-16
      • 2020-01-17
      • 2016-04-24
      • 2016-01-25
      相关资源
      最近更新 更多