频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

与ViewState相关联的.Net FrameWork类库

来源:qqread论坛 作者: 出处:巧巧读书 2006-07-31 进入讨论组

  我们在用.net开发web应用程序的时候经常会用到ViewState,真是个很有用的东东,那么ViewState到底是何方人氏那?
  其实ViewState只是StateBag类的一个实例,所以我们平时看到的只是冰山的一角,现在我们就来探究一下下面的更大的冰山.
  *********************************************************************************************
  
  NET Framework类库  StateBag 类
  1. 概述
  管理 ASP.NET 服务器控件(包括页)的视图状态。无法继承此类。
  Control.ViewState 属性是 StateBag 类的实例。
  有关此类型所有成员的列表,请参阅 StateBag 成员。
  System.Object
  System.Web.UI.StateBag
  [定义][C#]
  public sealed class StateBag : IStateManager, IDictionary,ICollection, IEnumerable
  [线程安全]
  此类型的所有公共静态(Visual Basic 中为 Shared)成员对多线程操作而言都是安全的。但不保证任何实例成员是线程安全的。
  [备注]
  页或控件的视图状态是该页或控件的累计属性值或视图。可以通过 Control.ViewState 属性访问此类。
  此类是所有 HTML 和 Web 服务器控件的主存储机制。它将属性/值对存储为与控件关联的字符串。仅在为页请求执行 OnInit 方法后,它才跟踪这些属性的更改,并将更改保存到页或控件的视图状态。
  在控件处理生存期的任何阶段可以从此类读取,但是当控件正在呈现时不应该向此类写入。
  此类实现一个字典,可以像对待任何字典对象那样从其中添加或移除项。有关数据集合(如字典)的更多信息,请参见将数据组合到集合中。
  [示例]
  下面的示例说明一个具有 Text 和 FontSize 属性的复合 Label 控件。当在该控件上调用 Control.Render 方法时,这些属性保存到视图状态并从视图状态检索。
  -------------------------------------------------------------------------------------------------------
  [C#]
  // This control renders values stored in view state for Text and FontSize properties.
  using System;
  using System.Web;
  using System.Web.UI;
  namespace ViewStateControlSamples {
  public class Label: Control {
  // Add property values to view state with set;
  // retrieve them from view state with get.
  public String Text {
  get {
  return (String) ViewState["Text"];
  }
  set {
  ViewState["Text"] = value;
  }
  }
  public int FontSize {
  get {
  return (int) ViewState["FontSize"];
  }
  set {
  ViewState["FontSize"] = value;
  }
  }
  
  [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
  protected override void Render(HtmlTextWriter output) {
  output.Write("" + this.Text + "");
  }
  }
  }
  ---------------------------------------------------------------------------------------------
  2.构造函数
  2.1 StateBag 构造函数
  public StateBag();  初始化 StateBag 类的新实例。这是此类的默认构造函数。
  public StateBag(bool); 初始化 StateBag 类的新实例,该实例允许存储的状态值不区分大小写。
  忽略大小写为 true;否则为 false。
  3.属性
  3.1 StateBag.Count 属性
  获取 StateBag 对象中的 StateItem 对象数。
  属性值 是 StateBag 对象中的项数。
  实现  ICollection.Count
  使用示例:
  -----------------------------------------------------
  [C#]
  private string GetMruList(string selectedValue) {
  StateBag state = ViewState;
  if (state.Count > 0) {
  int upperBound = state.Count;
  string[] keys = new string[upperBound];
  StateItem[] values = new StateItem[upperBound];
  state.Keys.CopyTo(keys, 0);
  state.Values.CopyTo(values, 0);
  StringBuilder options = new StringBuilder();
  for(int i = 0; i < upperBound; i++) {
  options.AppendFormat("
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章