用户单击后退按钮时显示的信息错误

时间:2012-07-05 11:08:43

标签: asp.net vb.net

我创建了一个简单的例子来展示我遇到的问题。在页面上放置一个asp.net复选框,在同一页面上放置一个asp.net文本框。在后面的代码中(使用vb.net),在选中复选框时,将代码显示在文本框中,并在未选中复选框时显示空文本框。简单吧?现在,在选中/取消选中复选框的情况下来回切换几次,文本框中包含内容/无内容。一切正常 - 对吧?

现在点击浏览器上的后退按钮几次。每次单击后退按钮时显示的结果相反 - 复选框在文本框中没有任何内容。未选中复选框,文本框中有文本。你把vb代码(页面加载,checkedchanged)放在哪里都没关系 - 结果相同。

我认为它与保存在缓存中的页面的timimg有关。类似于页面的东西正在缓存中保存,而复选标记触发了“单击”事件,但尚未触发填充文本框的代码。然后,我可能完全脱离标记,这是一件非常简单的事,我做错了。

非常感谢任何想法/想法/帮助。

示例代码:

ASPX:

<asp:CheckBox id="ChkBox1" runat="server" AutoPostBack="True" text="Sample" /><br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

VB:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If ChkBox1.Checked = True Then
            TextBox1.Text = "Checked"
        Else
            TextBox1.Text = ""
        End If
    End Sub

1 个答案:

答案 0 :(得分:3)

这是应该的方式。

每次回发到服务器时,浏览器都会记住。只要复选框状态发生变化,您的页面就会回发。

选中复选框状态后,文本框确实为空。这是回发发生的时间。您的服务器端代码设置文本值,您可以在浏览器中看到它。

但你的背部会记住你发送的内容,这是一个选中的复选框和空文本。

取消选中时会发生保留案例。

如果您使用F5刷新其中一个后页,您的浏览器应该要求发送回发布数据。你会回到预期的状态。

告诉浏览器不要缓存内容(如果您希望浏览器忘记它): 不是VB代码,但我相信你也会在VB.net上找到类似的功能。

context.Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.Cache.SetNoStore();