我有一个Asp.net .aspx页面。我以一个简单的“联系我们”页面为例。该页面有3个字段-名称/电子邮件/问题。场景是,用户输入了错误的电子邮件地址,作为响应,系统通过检查Regex来显示一条错误消息。
现在,如果用户点击back browser按钮或backspace键,浏览器将显示相同的页面,没有错误消息-这意味着落后一步。
如果用户同时犯了2个错误-1)将名称框留空,点击提交(错误消息显示所有字段都是必填字段)。2)错误邮件,点击提交(错误消息显示输入错误邮件)
现在,如果用户点击back browser按钮或backspace键,浏览器将显示与上一个错误消息(空框)相同的页面,即落后一步。再次点击返回,显示同一页面,没有任何错误信息,即后退两步。
我不想让back按钮或backspace来做这些不想要的操作。我也不想禁用后退按钮或不缓存任何东西。
我需要的是,当用户点击后退按钮或退格键,他们应该落地到以前浏览的不同页面,而不是同一页。这意味着,我不希望浏览器缓存在多个回发期间保留页面。相反,缓存应该只在页面最初登陆时保存一次页面。
我有时听说这种方法叫做智能导航,我试着用谷歌搜索,但找不到非常有用和优化的东西。这是我找到的最好的文章(不确定这就是我要找的)。http://support.microsoft.com/kb/913721
问题是,我不完全确定如何准确地引用这个问题。
我希望我的问题是非常直截了当的(我试着说清楚了)。如果有什么不清楚的地方,请告诉我。
我将非常感谢任何善意的帮助。
提前谢谢。
发布于 2012-10-02 19:01:34
我相信您可以将您的控件放在UpdateMode设置为Always的UpdatePanel中。
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
<ContentTemplate>
// Your controls
</ContentTemplate>
</asp:UpdatePanel>您还需要在页面的ScriptManager元素中包含一个表单。
<form id="form1" runat="server">
<asp:ScriptManager runat="server" EnablePartialRendering="true" />
....
</form>这将停止页面执行完整回发,并应停止您所描述的行为。我还会使用带有RegularExpressionValidator或RequiredFieldValidator等的客户端验证。
发布于 2013-07-01 10:10:10
这是另一个解决方案。尝试在“;%>”标签上添加<% Response.CacheControl =“no-;%>”缓存
https://stackoverflow.com/questions/12688966
复制相似问题