Response.Redirect(Request.Url.AbsoluteUri)不更新页面数据

时间:2013-06-19 08:43:43

标签: asp.net response.redirect

我有这样的Page_load方法:

private void Page_Load(object sender, System.EventArgs e)
{
    if (!IsPostBack)
    {
        // Load Content
        LoadContent();

        return;
        }
     // some code here
}

我在方法结束时使用Response.Redirect(Request.Url.AbsoluteUri)来阻止通过页面重新绑定来重新发布操作。当我从源代码运行我的应用程序运行良好(调试或运行模式),但当我发布应用程序(甚至在同一台机器上)页面数据(加载在LoadContent上)没有更新更新页面(但重新发布行动被阻止了。)

拜托,谁能告诉我它为什么会发生?

增加:

LoadContent()方法:

    // firstly I get an supervisedGroups list TIBCO iProcess Engine via .NET vendor library, and then:

    if (supervisedGroups != null)
    {
        rptSupervisedGroups.DataSource = supervisedGroups; // rpt.. is Repeater
        rptSupervisedGroups.DataBind();
    }

增加:

使用Response.Redirect的方法:

private void removeFromGroup(string strGroupName)
{
  using(SqlConnection con = DBHelper.GetNewConnection())
  {
      con.Open();
      // here comes query to DB     
  }

  // Reload Page
  Response.Redirect(Request.Url.AbsoluteUri);
}

2 个答案:

答案 0 :(得分:1)

您有两种方法可以解决此缓存问题。

一种是向浏览器发出不缓存此页面的说明,例如在您运行的页面加载时:

Response.Cache.SetExpires(DateTime.UtcNow.AddYears(-4));
Response.Cache.SetValidUntilExpires(false);
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
Response.Cache.SetNoStore();

但更好的解决方案是在进行重定向时在网址末尾添加一个随机数,或者甚至更好地从您插入的数据中添加新ID,例如:

Response.Redirect("samepage.aspx?newid=" + NewId);

通过这种方式,页面将再次被强制重新启动,并且您仍然具有缓存功能。

答案 1 :(得分:0)

您的网页最有可能被缓存。尝试按shift-f5查看内容。您可以使所有重定向网址唯一,以防止浏览器显示缓存页面。或者禁用特定页面的缓存。