【发布时间】:2017-12-01 05:22:22
【问题描述】:
当我通过 Response.Redirect 将页面重定向到具有不同查询字符串的相同 URL(到同一页面)时,我的视图状态被清除。
请为我提供在某处维护存储数据的视图状态数据的想法或替代方法,以便在同一页面上的 Response.Redirect 之后我可以获得该值 (仅适用于该页面,不适用于新标签)
会话将通过所有选项卡和页面为我提供数据 我希望它只在 response.redirect 之后才显示一页。
【问题讨论】:
-
Postback 和 Response.Redirect 到同一个 URL(到同一个页面)有区别
-
Response.Redirect和第一次去页面一样。您的选择可能是提出Response.Redirect的替代方案,使用回发来维护 ViewState。 Server.Transfer 也可能是另一种选择。我不会试图将 ViewState 作为一个整体来维护,它太复杂了,而且从设计上来说,很难操作。我们真的没有足够的信息来说明您要做什么,无法提供有意义的答案 -
我开发了纯动态页面。所有控件和值都是根据用户输入填充的,因此对于每个输入,我将页面重定向到相同的 URL,但通过 Request.QueryString 使用不同的查询字符串,因此我将数据存储在 ViewState 中(会话是不可能的,因为它会产生问题如果同一页面被多次打开),所以当我使用 response.redirect 重定向时,我的视图状态会被清除,所以我想要可以在 response.redirect 之后维护数据但仅适用于该页面的解决方案
-
Session 是一个可行的选择。每个页面实例都可以有一个 GUID 标识符,这是您的会话密钥,然后可以在查询字符串中或作为隐藏的表单变量传递此 guid。我仍然认为 Server.Transfer 可以工作。
-
但我认为 GUID 标识符只有在回发发生时才有效一次,而不是页面生成新的 guid,所以我如何验证该 guid