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();
}
我该如何解决这个问题?
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();
}   
这篇文章对您有所帮助 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
| 归档时间: | 
 | 
| 查看次数: | 25546 次 | 
| 最近记录: |