自动重新发送页面信息

时间:2011-12-30 10:40:42

标签: asp.net vb.net sql-server-2005 visual-studio-2005

我已将此代码添加到母版页面page_load事件中以防止缓存。 (从随机来源获得。)

    HttpContext.Current.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1))
    HttpContext.Current.Response.Cache.SetValidUntilExpires(False)
    HttpContext.Current.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches)
    HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache)
    HttpContext.Current.Response.Cache.SetNoStore()

在处理母版页中的信息后,比如添加两个数字并显示总和,当我离开母版页并想要使用浏览器的后退按钮返回时,重新发送对话框会显示“重新发送”和“取消” ' 纽扣。点击重新发送加载主页面及其先前的信息(总和),取消什么都不做,我想要做的是隐藏或禁用对话框并自动选择'重新发送',以便当用户点击浏览器的后退按钮他会自动重定向到上一个母版页,而不会出现对话框。 或者是否有任何具有类似效果的方法。或者这甚至是可能的。请在这里回复..新手。

1 个答案:

答案 0 :(得分:0)

浏览器显示此消息,因为单击按钮时页面POST将返回服务器。它发送输入值(要求的两个数字),服务器响应结果。当您单击“返回”时,浏览器会向您发出警告,因为通常再次POST数据是个坏主意。例如,进行在线购买。

您可以通过在Response.Redirect(...)处理程序中添加Button_Click来解决此问题 - 这会发送新的GET请求。我可以显示C#代码,我不知道VB.NET抱歉:

public void Page_Load(object sender, EventArgs e) {
  if (IsPostBack) return;
  int num1, num2;
  if (Int32.TryParse(Session["num1"], out num1) && Int32.TryParse(Session["num2"], out num2)) {
    txtNum1.Text = num1.ToString();
    txtNum2.Text = num2.ToString();
    lblSum.Text = (num1 + num2).ToString();
  } 
}

internal void Button1_Click(object sender, EventArgs e) {
  Session["num1"] = txtNum1.Text;
  Session["num2"] = txtNum2.Text;
  Response.Redirect(Request.Url.PathAndQuery);
}