2011-12-30 74 views
1

我已将此代码添加到主页面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() 

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

回答

0

浏览器显示此消息是因为您的页面POST在点击按钮时返回到服务器。它发送输入值(两个数字相加),然后服务器响应结果。当你点击“返回”时,浏览器会提醒你,因为经常再次发现数据不好。例如,进行在线购买。

您可以通过在Button_Click处理程序中放入Response.Redirect(...)来解决此问题 - 这会发送新的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); 
}