科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道与ViewState相关联的.Net FrameWork类库

与ViewState相关联的.Net FrameWork类库

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

     我们在用.net开发web应用程序的时候经常会用到ViewState,真是个很有用的东东,那么ViewState到底是何方人氏那?   其实ViewState只是StateBag类的一个实例,所以我们平时看到的只是冰山的一角,现在我们就来探

作者:中国IT实验室 来源:中国IT实验室 2007年9月30日

关键字: 编程

  • 评论
  • 分享微博
  • 分享邮件
  
  我们在用.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("
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章