日志不说谎--Asp.net的生命周期 【结题】

  1. 云栖社区>
  2. 博客>
  3. 正文

日志不说谎--Asp.net的生命周期 【结题】

唐玄奘 2017-12-03 18:37:00 浏览590
展开阅读全文
日志不说谎--Asp.net的生命周期 
None.gif这个问题解决掉了,要想知道为什么Page.IsPostBack为true,就要看看Asp.net中是怎么实现这个属性的;
None.gif打开Reflector,依次点开System.Web.UI.Page 
None.gif
public bool get_IsPostBack()
ExpandedBlockStart.gif
{
InBlock.gif    
if (this._requestValueCollection != null)
ExpandedSubBlockStart.gif    
{
InBlock.gif        
if (this._isCrossPagePostBack)
ExpandedSubBlockStart.gif        
{
InBlock.gif            
return true;
ExpandedSubBlockEnd.gif        }

InBlock.gif        
if (this._pageFlags[8])
ExpandedSubBlockStart.gif        
{
InBlock.gif            
return false;
ExpandedSubBlockEnd.gif        }

InBlock.gif        
if ((this.Context.ServerExecuteDepth <= 0|| ((this.Context.Handler != null&& (base.GetType() == this.Context.Handler.GetType())))
ExpandedSubBlockStart.gif        
{
InBlock.gif            
return !this._fPageLayoutChanged;
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif    }

InBlock.gif    
return false;
ExpandedBlockEnd.gif}

None.gifIsPostBack由两个因素决定:
1.request value collection (form post collection)  if that's missing then it's not postback straight away. 2.detected if data coming from ViewState contains same hash code as on previous request ,that is if the hash code doesn't match then it is not a postback 
None.gif
 
None.gif 

网友评论

登录后评论
0/500
评论
唐玄奘
+ 关注