asp.net

位置:IT落伍者 >> asp.net >> 浏览文章

ASP.NET中Control基类清理页面状态


发布日期:2018年08月20日
 
ASP.NET中Control基类清理页面状态

控件开发时有时候需要清除子控件的页面状态比如在创建子控件时以下是一个在数据绑定时清除视图并创建子控件的应用场景

public override void DataBind()
{
baseOnDataBinding(EventArgsEmpty);
ControlsClear();
ClearChildViewState(); //清理视图状态
TrackViewState();
CreateControlHierarchy(true);
ChildControlsCreated = true;
}

本节介绍几个清理页面状态的方法主要由Control基类提供

.HasChildViewState方法

获取一个值该值指示当前服务器控件的子控件是否具有任何已保存的视图状态设置如果有任何子控件具有已保存的视图状态信息则返回true否则返回false

.IsChildControlStateCleared方法

获取一个值该值指示当前控件中包含的控件是否具有控件状态如果该控件的子级不使用控件状态则返回true否则返回false

.ClearChildState方法

同时清除子控件的视图状态和控件状态其方法体如下

protected void ClearChildState()
{
thisClearChildControlState();
thisClearChildViewState();
}

.ClearChildControlState方法

清除控件状态其代码如下

protected void ClearChildControlState()
{
if (thisControlState >= ControlStateInitialized)
{
thisflagsSet(x);
if (thisPage != null)
{
thisPageRegisterRequiresClearChildControlState(this);
}
}
}

控件状态是通过方法

PageRegisterRequiresControlState(this);

将控件注册为具有持久性控件状态的控件同时也要调用方法

thisPageRegisterRequiresClearChildControlState(this);

清除控件状态不同的是此方法是内部方法不供开发人员调用只能通过ClearChild ControlState方法间接调用

.ClearChildViewState方法

此方法主要清除子控件的视图状态其代码结构如下

protected void ClearChildViewState()
{
if (this_occasionalFields != null)
{
this_occasionalFieldsControlsViewState = null;
}
}

方法体中设置控件视图状态的IDictionary对象ControlsViewState为null

上一篇:Asp.net获取当前目录的方法小结

下一篇:Asp.Net 无刷新文件上传并显示进度条的实现方法及思路