首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 请教MSDN上关于自定义状态管理的一个问题
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lingdu_hua
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-08-21 17:15:10 楼主
    C# code
    #region 自定义ViewState /// <summary> /// 指示服务器控件是否正在跟踪其视图状态更改 /// </summary> private bool _isTrackingViewState; /// <summary> /// 创建StateBag类型对象 /// </summary> private StateBag _viewState; /// <summary> /// 建立ViewState对象 /// </summary> protected virtual StateBag ViewState { get { if (_viewState == null) { //如果未对其赋值,则返回空对象 _viewState = new StateBag(false); if (_isTrackingViewState) { ((IStateManager)_viewState).TrackViewState(); } } return _viewState; } } #endregion #region 自定义类型状态管理 bool IStateManager.IsTrackingViewState { get { return _isTrackingViewState; } } void IStateManager.LoadViewState(object savedState) { if (savedState != null) ((IStateManager)ViewState).LoadViewState(savedState); } object IStateManager.SaveViewState() { object savedState = null; if (_viewState != null) { savedState = ((IStateManager)_viewState).SaveViewState(); } return savedState; } void IStateManager.TrackViewState() { _isTrackingViewState = true; if (_viewState != null) { ((IStateManager)_viewState).TrackViewState(); } } #endregion

    1.我想问的是为什么只有LoadViewState方法内调用的是ViewState属性的LoadViewState方法,而其余的方法内都是调用的_viewState私有变量的对应方法呢?
    2.另外还有一个问题,我的自定义控件里有一个自定义集合类型(MenuItems)的属性,该集合继承了BaseCollection,集合中项MenuItem类的状态管理也写了上面的那些代码,在MenuItems中也写了一套状态管理的代码,都是循环调用MenuItem的相应方法的,这样做是否可行呢?为什么当我在页面Page_Load的事件里添加MenuItem后,断点到MenuItem的SaveViewState()方法内却发现((IStateManager)_viewState).SaveViewState();的返回值是NULL?以至于在控件类中LoadViewState的时候读取不到值了.
    请高手给段在集合属性中自定义视图状态管理的代码(最好包括控件类,集合类,和集合项类中的关键代码),MSDN上是用ArrayList做的,而且并未给出相关自定义视图状态的代码...
    谢谢了.
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • LQknife
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 17:17:071楼 得分:0
    晓习 顶顶更健康
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lingdu_hua
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 09:07:342楼 得分:0
    高手在哪里呢?帮帮忙咯~谢谢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hy_lihuan
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 09:22:393楼 得分:0
    汗,这么高深的问题,感觉是你的代码在页面的生命周期内的位置放错了导致的;具体的没有时间帮你研究了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lingdu_hua
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 09:30:374楼 得分:0
    我在添加MenuItem至集合属性的时候是在Pre_Render事件里执行的,应该是在保存视图状态方法之前啊.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Rail100
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 19:08:315楼 得分:0
    自己先把asp.net页面生命周期看10次,理解之后就可以解决你的问题,如果要了解更深入的机制,这个不是三言两语说得完
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • shoushii
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-25 09:29:536楼 得分:0
    ASP.NET服务器控件与组件开发一书
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved