如何在.net中检测页面刷新

Sri*_*nth 15 c# asp.net sharepoint page-lifecycle sharepoint-object-model

我有一个Button_click活动.在刷新页面时,先前的Postback事件再次触发.如何识别页面刷新事件以阻止该Postback操作?

我尝试了以下代码来解决它.实际上,我在SharePoint页面中添加了一个可视webpart.添加webpart是一个回发事件所以!每次我将webpart添加到页面时,回发总是假的,并且我在else循环中收到错误,因为对象引用是null.

if (!IsPostBack){
    ViewState["postids"] = System.Guid.NewGuid().ToString();
    Cache["postid"] = ViewState["postids"].ToString();
}
else{
    if (ViewState["postids"].ToString() != Cache["postid"].ToString()){
        IsPageRefresh = true;
    }
    Cache["postid"] = System.Guid.NewGuid().ToString();
    ViewState["postids"] = Cache["postid"].ToString();
}
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

lat*_*s64 10

使用viewstate对我来说效果更好,详见此处.基本上:

bool IsPageRefresh = false;

//this section of code checks if the page postback is due to genuine submit by user or by pressing "refresh"
if (!IsPostBack)     
{
    ViewState["ViewStateId"] = System.Guid.NewGuid().ToString();
    Session["SessionId"] = ViewState["ViewStateId"].ToString();
}
else
{
    if (ViewState["ViewStateId"].ToString() != Session["SessionId"].ToString())
    {
        IsPageRefresh = true;
    }

    Session["SessionId"] = System.Guid.NewGuid().ToString();
    ViewState["ViewStateId"] = Session["SessionId"].ToString();
}   
Run Code Online (Sandbox Code Playgroud)


Vin*_*oth 5

这篇文章对您有所帮助 http://www.codeproject.com/Articles/68371/Detecting-Refresh-or-Postback-in-ASP-NET

您正在向视图状态添加Guid以唯一标识每个页面.当您在Page类本身时,此机制可以正常工作.如果需要在到达页面处理程序之前识别请求,则需要使用不同的机制(因为视图状态尚未恢复).

Page.LoadComplete事件是检查Guid是否与页面关联的合理位置,如果不是,则创建一个.

检查这个 http://shawpnendu.blogspot.in/2009/12/how-to-detect-page-refresh-using-aspnet.html