Asp.net ViewState—又见ViewState
Text
{
get
{
returnViewState["Text"]==null?string.Empty:ViewState["Text"].ToString();
}
set
{
ViewState["Text"]=value;
}
}
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!IsPostBack)
{
Text="test";
}
Controls.Add(ParseControl("Page_Load<br/>"));
}
protectedvoidPage_PreInit(objectsender,EventArgse)
{
Controls.Add(ParseControl("Page_PreInit<br/>"));
}
protectedvoidPage_Init(objectsender,EventArgse)
{
Controls.Add(ParseControl("Page_Init<br/>"));
}
protectedvoidPage_InitComplete(objectsender,EventArgse)
{
Controls.Add(ParseControl("Page_InitCompleted<br/>"));
}
protectedvoidPage_PreLoad(objectsender,EventArgse)
{
Controls.Add(ParseControl("Page_PreLoad<br/>"));
}
protectedvoidPage_LoadComplete(objectsender,EventArgse)
{
Controls.Add(ParseControl("Page_LoadCompleted<br/>"));
}
protectedvoidPage_PreRender(objectsender,EventArgse)
{
Controls.Add(ParseControl("Page_PreRender<br/>"));
}
protectedvoidPage_PreRenderComplete(objectsender,EventArgse)
{
Controls.Add(ParseControl("Page_PreRenderComplete<br/>"));
}
protectedoverridevoidRender(HtmlTextWriterwriter)
{
Controls.Add(ParseControl("Render<br/>"));
base.Render(writer);
}
protectedvoidPage_Unload(objectsender,EventArgse)
{
Controls.Add(ParseControl("Page_Unload<br/>"));
}
protectedoverridevoidLoadViewState(objectsavedState)
{
Controls.Add(ParseControl("LoadViewState<br/>"));
base.LoadViewState(savedState);
}
protectedoverridevoidTrackViewState()
{
Controls.Add(ParseControl("TrackViewState<br/>"));
base.TrackViewState();
}
protectedoverrideobjectSaveViewState()
{
Controls.Add(ParseControl("SaveViewState<br/>"));
returnbase.SaveViewState();
}
}
结果如下: 1.在页面第一次加载时: 2.点击按钮产生回发时: 可以发现在回发时多了一个LoadViewState,它做了什么事情呢?它的工作就是从页面的_ViewState隐藏域中恢复视图状态。那在这个阶段之前对视图状态的更改呢?结果是将会被覆盖掉。于是对应于我们的DropDownList的例子,当第一次执行时为其动态添加的两个item都将被放到视图状态中(通过SaveViewState),而在产生回发时,尽管在执行到Init时又添加了Item,到了LoadViewState的时候,DropDownList的Items又会恢复成上一次保存到视图状态时的情形(同时接下来在调用SaveViewState方法时,又会将当前的Items放到视图状态中去)。如此反复,也就难怪只能看见一直增加Load这样的Item了。 三、为ViewState正名 郑重声明,ViewState是个好人。 最后啰嗦一句,上面‘回’的意思是‘一次’的意思,莫误解了. |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |