我有这样的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);
}
答案 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查看内容。您可以使所有重定向网址唯一,以防止浏览器显示缓存页面。或者禁用特定页面的缓存。