首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止在多个回发期间将页面存储在缓存中?被称为智能导航的东西

如何防止在多个回发期间将页面存储在缓存中?被称为智能导航的东西
EN

Stack Overflow用户
提问于 2012-10-02 18:54:35
回答 2查看 1.3K关注 0票数 0

我有一个Asp.net .aspx页面。我以一个简单的“联系我们”页面为例。该页面有3个字段-名称/电子邮件/问题。场景是,用户输入了错误的电子邮件地址,作为响应,系统通过检查Regex来显示一条错误消息。

现在,如果用户点击back browser按钮或backspace键,浏览器将显示相同的页面,没有错误消息-这意味着落后一步。

如果用户同时犯了2个错误-1)将名称框留空,点击提交(错误消息显示所有字段都是必填字段)。2)错误邮件,点击提交(错误消息显示输入错误邮件)

现在,如果用户点击back browser按钮或backspace键,浏览器将显示与上一个错误消息(空框)相同的页面,即落后一步。再次点击返回,显示同一页面,没有任何错误信息,即后退两步。

我不想让back按钮或backspace来做这些不想要的操作。我也不想禁用后退按钮或不缓存任何东西。

我需要的是,当用户点击后退按钮或退格键,他们应该落地到以前浏览的不同页面,而不是同一页。这意味着,我不希望浏览器缓存在多个回发期间保留页面。相反,缓存应该只在页面最初登陆时保存一次页面。

我有时听说这种方法叫做智能导航,我试着用谷歌搜索,但找不到非常有用和优化的东西。这是我找到的最好的文章(不确定这就是我要找的)。http://support.microsoft.com/kb/913721

问题是,我不完全确定如何准确地引用这个问题。

我希望我的问题是非常直截了当的(我试着说清楚了)。如果有什么不清楚的地方,请告诉我。

我将非常感谢任何善意的帮助。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-02 19:01:34

我相信您可以将您的控件放在UpdateMode设置为Always的UpdatePanel中。

代码语言:javascript
复制
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
    <ContentTemplate>
        // Your controls
    </ContentTemplate>
</asp:UpdatePanel>

您还需要在页面的ScriptManager元素中包含一个表单。

代码语言:javascript
复制
<form id="form1" runat="server">
    <asp:ScriptManager runat="server" EnablePartialRendering="true" />
....
</form>

这将停止页面执行完整回发,并应停止您所描述的行为。我还会使用带有RegularExpressionValidator或RequiredFieldValidator等的客户端验证。

票数 2
EN

Stack Overflow用户

发布于 2013-07-01 10:10:10

这是另一个解决方案。尝试在“;%>”标签上添加<% Response.CacheControl =“no-;%>”缓存

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12688966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档