0

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

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

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

现在,如果用户点击返回浏览器按钮或退格键,浏览器将显示与先前错误消息相同的页面(对于空框),即落后 1 步。再次回击,显示相同的页面,没有任何错误消息,即落后 2 步。

我不希望后退按钮或退格键执行这些不需要的操作。我也不想禁用后退按钮或不缓存任何内容。

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

有时我听说这种方法称为 smartnavigation,我尝试使用谷歌搜索,但找不到非常有用和优化的东西。这是我找到的最好的文章(不确定这是我要找的)。 http://support.microsoft.com/kb/913721

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

我希望我的问题非常简单(我试图澄清)。如果有不清楚的地方,请告诉我。

我将不胜感激任何帮助。

提前致谢。

4

2 回答 2

2

我相信您可以将控件放在 UpdatePanel 中,并将 UpdateMode 设置为 Always ie

<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 等的客户端验证。

于 2012-10-02T11:01:33.620 回答
0

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

于 2013-07-01T02:10:09.667 回答