我的ViewState实现导致每次按“返回”按钮时出现“确认表单重新提交”对话框,但是当我使用microsoft的aspx创建测试站点时,他们的viewstate不会导致此类问题......
我应该知道什么阻止我的浏览器显示“确认表格重新提交”?
修改
我找到了一个有趣的资源here,这个问题在浏览器缓存方面有所描述,如果页面是缓存的,那么它根本就不会发布帖子,现在有趣的是如何制作我的页面默认情况下可缓存..
答案 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是关于在客户端缓存页面的好信息。