Asp.net ViewState——运用

对于asp.net开发者,尤其是对控件开发感兴趣的朋友来说,视图状态绝对是个让人头痛的问题.一直以来,我都很困惑,在网上寻觅了很久,这两天才稍稍有了些眉目. 再鉴于本人一直潜水,因此决定今天就冒第一个泡泡吧.

当我们从Control或者WebControl派生新的控件时,我们不用定义ViewState属性就可以使用改属性了,因此它应该是派生下来的.当我们用reflector查看下源代码就可以知道,它位于Control中.

protected virtual StateBag ViewState
{
  get
  {
  .
  }
  set
  {
  
  }
}

这里又出现了一个StateBag新类型,它又是什么什么东西呢?我们还是从源代码入手:

StateBag来自于System.Web.UI,它的声明如下:

  public sealed class StateBag : IStateManager, IDictionary, ICollection, IEnumerable
  
   ............

这里我们重点要关注的是IStateManager,因为在我们为自己的自定义控件定制视图状态管理时就需要从这个接口派生.但这次我先不讨论它

从名字上来说,我们大致可以认为它是一个容器,一个装'State'的容器.

下面让我们看看StateBag的实现:

private IDictionary bag;
private bool marked;
public StateBag(bool ignoreCase)
    {
      this.marked = false;
      this.ignoreCase = ignoreCase;
      this.bag = this.CreateBag();
    }
private IDictionary CreateBag()
    {
      return new HybridDictionary(this.ignoreCase);
    }

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索控件
, private
, 视图
, this
, viewstate
一个
,以便于您获取更多的相关知识。

时间: 2024-10-18 10:25:49

Asp.net ViewState——运用的相关文章

ASP.NET ViewState 初探 (1)

ASP.NET ViewState 初探 Susan WarrenMicrosoft Corporation 2001 年 11 月 27 日 与刚接触 ASP.NET 页面的开发人员交谈时,他们通常向我提出的第一个问题就是:"那个 ViewState 到底是什么?"他们的语气中流露出的那种感觉,就象我来到一家异国情调的餐馆,侍者端上一道我从未见过的菜肴时的那种感觉 - 既疑惑不解,又充满好奇.但肯定有人认为它不错,否则就不会提供了.所以,我会先尝一尝,或许会喜欢上它,尽管它看上去的确

ASP.NET ViewState 初探 (1) 转自msdn

asp.net ASP.NET ViewState 初探 Susan WarrenMicrosoft Corporation 2001 年 11 月 27 日 与刚接触 ASP.NET 页面的开发人员交谈时,他们通常向我提出的第一个问题就是:"那个 ViewState 到底是什么?"他们的语气中流露出的那种感觉,就象我来到一家异国情调的餐馆,侍者端上一道我从未见过的菜肴时的那种感觉 - 既疑惑不解,又充满好奇.但肯定有人认为它不错,否则就不会提供了.所以,我会先尝一尝,或许会喜欢上它,

ASP.NET ViewState 初探 (3) 转自msdn

asp.net 选择会话状态还是 ViewState?在某些情况下,将状态值保存在 ViewState 中并不是最佳选择,最常用的替代方法就是会话状态,它通常更适用于: 大量的数据.由于 ViewState 增加了发送到浏览器的页面的大小(HTML 有效负载),同时也增加了回传的窗体的大小,因此不适合存储大量数据. 未在 UI 中显示的安全数据.尽管 ViewState 数据已被编码,并且可以选择对其进行加密,但始终不将数据发送到客户端才是最安全的.因此,会话是更安全的选择.(由于数据库需要额外

ASP.NET ViewState初探

asp.net 与刚接触 ASP.NET 页面的开发人员交谈时,他们通常向我提出的第一个问题就是:"那个 ViewState 到底是什么?"他们的语气中流露出的那种感觉,就象我来到一家异国情调的餐馆,侍者端上一道我从未见过的菜肴时的那种感觉 - 既疑惑不解,又充满好奇.但肯定有人认为它不错,否则就不会提供了.所以,我会先尝一尝,或许会喜欢上它,尽管它看上去的确很古怪! 对于 ViewState 也是如此,但是如果适应了它的风格,您会发现在许多情况下,您将乐于在自己的 ASP.NET 应

ASP.NET ViewState 初探

asp.net     与刚接触 ASP.NET 页面的开发人员交谈时,他们通常向我提出的第一个问题就是:"那个 ViewState 到底是什么?"他们的语气中流露出的那种感觉,就象我来到一家异国情调的餐馆,侍者端上一道我从未见过的菜肴时的那种感觉 - 既疑惑不解,又充满好奇.但肯定有人认为它不错,否则就不会提供了.所以,我会先尝一尝,或许会喜欢上它,尽管它看上去的确很古怪!      对于 ViewState 也是如此,但是如果适应了它的风格,您会发现在许多情况下,您将乐于在自己的

ASP.NET ViewState 初探 (2) 转自msdn

asp.net 请看下面的示例:要在 Web 页上显示一个项目列表,而每个用户需要不同的列表排序.项目列表是静态的,因此可以将这些页面绑定到相同的缓存数据集,而排序顺序只是用户特定的 UI 状态的一小部分.ViewState 非常适合于存储这种类型的值.代码如下: [Visual Basic]<%@ Import Namespace="System.Data" %><HTML>    <HEAD>        <title>用于页面 U

Asp.net ViewState—又见ViewState

序 HTML <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xht

asp.net viewstate 回发机制_实用技巧

所谓回发机制,其实说白了就是自己发送给自己(本页面)而已.下面我们新建一个网站,打开默认添加的Default.aspx页面,form部分代码如下: 复制代码 代码如下: <form id="form1" runat="server" > <div> </div> </form> 下面是运行页面后的HTML代码: 复制代码 代码如下: <form name="form1" method=&quo

Asp.net ViewState——自定义状态管理(二)

在上一篇ViewState--自定义状态管理(一)中我在自定义属性的类里面加入了一个重写的ToString方法和一个从字符串获取一个该类型实例的一个构造函数.大家可能会觉得谈到自定义属性的状态管理却不提及TypeConverter(Attribute),有些神奇.好吧,下面就来说说TypeConverter. 先看下MSDN的解释:提供一种将值的类型转换为其他类型以及访问标准值和子属性的统一方法. 在上一篇我自己写了两个方法而没有使用TypeConverter就是想从一方面说明TypeConve