微软的viewstate实现不会导致“确认表单重新提交”消息出现,他们是如何做到的?

时间:2011-02-01 14:51:43

标签: php asp.net forms viewstate

我的ViewState实现导致每次按“返回”按钮时出现“确认表单重新提交”对话框,但是当我使用microsoft的aspx创建测试站点时,他们的viewstate不会导致此类问题......

我应该知道什么阻止我的浏览器显示“确认表格重新提交”?

修改

我找到了一个有趣的资源here,这个问题在浏览器缓存方面有所描述,如果页面是缓存的,那么它根本就不会发布帖子,现在有趣的是如何制作我的页面默认情况下可缓存..

2 个答案:

答案 0 :(得分:2)

一个经典的技巧是在帖子后发布重定向。所以,假设你有一个带有文本框和按钮的表单:

 <asp:TextBox ID="MyTextBox" runat="server"></asp:TextBox>
 <asp:Button ID="MyButton" runat="server" onclick="MyButton_Click" 
        Text="Button" />

在按钮的事件处理程序中,您执行以下操作:

protected void MyButton_Click(object sender, EventArgs e)
{
    // Get the value of the textbox and do something with it
    string text = MyTextBox.Text;

    // Redirect to a Thank You page
    Response.Redirect("ThankYou.aspx");
}

如果您愿意,可以重定向到您所在的同一页面,但是您将丢失所有ViewState。

答案 1 :(得分:1)

如果有人有兴趣,在设置以下页面时,问题就解决了:

“Cache-Control:max-age = 3600,必须重新验证”它只是在客户端上缓存页面。这可以防止浏览器显示“确认表单重新提交”

Here是关于在客户端缓存页面的好信息。