ASP.NET ViewState功能有时可能是一把双刃剑。我在大部分项目中都依赖它,并大大加快了开发速度。带有页面刷新和书签的ASP.NET ViewState回发
我的问题是,有时用户会尝试刷新页面,这将导致视图状态丢失,其他时候用户可能希望为页面添加书签,但是当取回视图状态将丢失。
当用户尝试刷新作为POST操作结果的页面(例如,asp回发)时,现代浏览器将显示一个愚蠢的对话框,这根本不可取。
我不知道是他们的方式继续使用ViewState和回发模型,但没有刷新对话框的缺点。 (并且如果可能的话,将书签标记在页面上。)
我想要做的一个例子是使页面上有记录和复选框,用户可以选择检查他们想要删除的所有记录,然后点击一个删除按钮。用户单击删除后,记录将在服务器上进行分析,新页面将列出使用确认删除按钮选择的所有记录。现在,如果用户点击刷新,他们会得到这个愚蠢的框,以确认他们是否要发布。
我明白,ViewState是使用Post Back模型的结果,这意味着大多数asp.net页面是POST操作的结果,但我不知道是否有任何方法。
解决办法,我认为可能的工作:
在激发Page_Unload事件保存在会话视图状态一个唯一的ID和用户提供唯一的ID作为查询字符串参数重定向到同一页面,在页面加载与后视图状态从会话中加载并注入到当前页面中的唯一标识。这样的方法将允许用户刷新页面并始终返回相同的结果。
P.S. 我明白,我可以使用Response.Redirect()
和/或查询字符串,但是我想使用的ViewState
+1“我的建议是不要打工具”。如果该工具不适合工作,找到一个是 – Dean 2012-12-21 05:24:48