当前位置: 首页 > news >正文

兰州商城网站建设企业培训员工培训平台

兰州商城网站建设,企业培训员工培训平台,网站建设的误区,北京短视频拍摄接着上文Asp.net TextBox的TextChanged事件你真的清楚吗#xff1f; 这里我们来说说状态数据时如何加载的。虽然在Control中有调用状态转存的方法#xff0c;但是这里有一个判断条件 if (_controlState ControlState.ViewStateLoaded) 一般的get请求这里的条件是不满足…接着上文Asp.net TextBox的TextChanged事件你真的清楚吗 这里我们来说说状态数据时如何加载的。虽然在Control中有调用状态转存的方法但是这里有一个判断条件 if (_controlState ControlState.ViewStateLoaded)  一般的get请求这里的条件是不满足的。 internal enum ControlState {     Constructed,     FrameworkInitialized,     ChildrenInitialized,     Initialized,     ViewStateLoaded,     Loaded,     PreRendered } 我们知道在page的ProcessRequest中this.ControlState ControlState.FrameworkInitialized; ProcessRequestMain方法中在Init后有调用this.InitRecursive(null);在这个方法里面有这么一句_controlState ControlState.Initialized;在LoadAllState()方法中有这么一句 base.LoadViewStateRecursive(second.Second);而LoadViewStateRecursive中又有_controlState ControlState.ViewStateLoaded这句带代码所以我们在Page_load中动态条件控件时 if (_controlState ControlState.ViewStateLoaded)条件成立如图 所以在运行this.form1.Controls.Add(txt);这句以前txt的值为demo1 如图 但是运行以后之就发生变化了 当然这里的txt.Text值也是我上次post过来的旧值新值是在控件的LoadPostData方法中重新绑定。在默认的LoadViewStateRecursive方法中有一个很重要的判断         internal void LoadViewStateRecursive(object savedState) {             // nothing to do if we have no state             if (savedState null || flags[disableViewState])                 return;  。。。。。。。 _controlState ControlState.ViewStateLoaded             } 大家看到我上面是一个CustTextBoxt : TextBox控件如果我们直接添加TextBox控件的话那么着这里的txt.Text一直都是demo1可见控件动态添加的时候是否加载状态数 据与状态数据的保存有关。而状态数据的保存主要就是SaveViewState完成的这里我第一次post的时候SaveViewState返回数据 所以第二次能取到上次post过来的数据。 其中与SaveViewState有关的方法主要有 public class TextBox : WebControl, IPostBackDataHandler, IEditableTextControl {protected override object SaveViewState() {if (SaveTextViewState false) {ViewState.SetItemDirty(Text, false);}return base.SaveViewState();}private bool SaveTextViewState {get {//// Must be saved when// 1. There is a registered event handler for SelectedIndexChanged// 2. Control is not enabled or visible, because the browsers post data will not include this control// 3. The instance is a derived instance, which might be overriding the OnTextChanged methodif (TextMode TextBoxMode.Password) {return false;}if ((Events[EventTextChanged] ! null) ||(IsEnabled false) ||(Visible false) ||(ReadOnly) ||(this.GetType() ! typeof(TextBox))) {return true;}return false;}}}public class WebControl : Control, IAttributeAccessor {protected override object SaveViewState() {Pair myState null;// Save values cached out of view stateif (_webControlFlags[disabledDirty]) {ViewState[Enabled] !flags[isWebControlDisabled];}if (ControlStyleCreated) {// the style shares the StateBag of its owner WebControl// call SaveViewState to let style participate in state managementControlStyle.SaveViewState();}object baseState base.SaveViewState();object aState null;if (attrState ! null) {aState attrState.SaveViewState();}if (baseState ! null || aState ! null) {myState new Pair(baseState, aState);}return myState;} } public class Control : IComponent, IParserAccessor, IUrlResolutionService, IDataBindingsAccessor, IControlBuilderAccessor, IControlDesignerAccessor, IExpressionsAccessor {protected virtual object SaveViewState() {// Save values cached out of view stateif (flags[visibleDirty]) {ViewState[Visible] !flags[invisible];}if (flags[validateRequestModeDirty]) {ViewState[ValidateRequestMode] (int)ValidateRequestMode;}if (_viewState ! null)return _viewState.SaveViewState();return null;} } public sealed class StateBag : IStateManager, IDictionary {internal object SaveViewState() {ArrayList data null;if (bag.Count ! 0) {IDictionaryEnumerator e bag.GetEnumerator();while (e.MoveNext()) {StateItem item (StateItem)(e.Value);if (item.IsDirty) {if (data null) {data new ArrayList();} #if OBJECTSTATEFORMATTERdata.Add(new IndexedString((string)e.Key)); #elsedata.Add(e.Key); #endifdata.Add(item.Value);}}}return data;}} 到这里我们知道保存状态信息主要是在StateBag 的SaveViewState方法中这里有一个检查  if (item.IsDirty) 在TextBox的SaveViewState方法中有一个判断     if (SaveTextViewState false) {                 ViewState.SetItemDirty(Text, false);             }  与它的SaveTextViewState 属性有关。 那么我们可以总结一下动态创建的控件默认是在被添加的时候加载器状态数据如果是静态添加的数据那就是LoadAllState来处理状态数据的加载。状态数据的加载与控件的SaveViewState密切相关如果该方法的返回值为null既没有状态信息那也不需要加载什么状态信息了。转载于:https://www.cnblogs.com/majiang/archive/2012/12/11/2813072.html
http://www.zqtcl.cn/news/332900/

相关文章:

  • 学生个人网站作品怎么wordpress用的什么主题
  • 设计logo网站侵权吗知乎一键做单页网站
  • 网站服务器有什么用做视频网站视频存放问题
  • 影评网站建设可以免费发布招聘网站
  • 富阳做兼职的网站正邦设计上海分公司
  • 网站漏洞解决办法投资
  • wordpress网站如何网页设计实训总结3000字大学篇
  • 用ps怎么做网站导航条wordpress 开启缩略图
  • 网上销售型的企业网站为什么要域名备案
  • 唐山网站建设方案优化国内酷炫网站
  • 国外网站备案吗网站做一样没有侵权吧
  • 谷歌怎么建网站ps中怎样做网站轮播图片
  • 汕头有没有做网站廊坊宣传片制作公司
  • 百度快速收录网站有些人做网站不用钱的 对吗
  • 如何规划一个网站网站建设预付费入什么科目
  • 北京做网站的好公司有哪些网站建设杭州缘择低价
  • 建设网站团队张掖响应式建站平台
  • 中国建设之乡是哪里网站优化连云港哪家强?
  • 网站建设报价是多少30号长沙封城最新消息
  • 常州专业网站建设费用电商推广技巧
  • 辽源市网站建设南通营销网站开发
  • 新站优化案例去韩国用什么地图导航
  • 宁波网站制作与推广WordPress怎么文章分类
  • mvc 做网站国内的搜索引擎有哪些
  • 设计视频网站腾讯云服务器网站域名备案
  • 网站建设费算费用还是固定资产镇赉县做网站的
  • 山西 旅游 英文 网站建设wordpress 设置登陆界面
  • 电商网站系统建设考试深圳网站建设培训哪家好
  • 工作室 网站项目策划书八篇案例
  • ui做网站流程建设统计网站进不去