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

在写自己的控件的时候我们不可能一直只定义string,int等内置类型的属性-夜路走多了总会撞鬼的.当遇到复杂属性(自定义的类型)时,我们该如何来保存其视图状态呢.这个问题困扰了我很久...

下面我想用几个小例子表达下自己的'捉鬼'经历.

Husband

namespace Controls
{
  using System;
  using System.Collections.Generic;
  using System.Text;
  using System.Web.UI;
  public class Husband: Control
  {
    public Wife MyWife
    {
      get
      {
        .
      }
      set
      {
        ViewState["MyWife"] = value;
      }
    }
  }
  public class Wife
  {
    private string m_Name;
    private int m_Age;
    public string Name
    {
      get { return m_Name; }
      set { m_Name= value; }
    }
    
    public int Age
    {
      get { return m_Age; }
      set { m_Age= value; }
    }
  }
}

看见这段代码,很多朋友估计都要骂我了,为什么呢,运行下吧:发现会抛出以下异常

Type 'Controls.Wife' in Assembly 'Controls, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.

在看见这种异常后,以前我都会直接在Wife前面加上[Serializable]Attribute,加上之后的确运行成功了但是很不幸,这种方式是要挨板砖的.

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索状态估计
, string
, using
, system
, public
, value
, wife 蓝牙定位
Controls
,以便于您获取更多的相关知识。

时间: 2024-09-18 14:32:50

Asp.net ViewState——自定义状态管理(一)的相关文章

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

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

ASP.NET2.0服务器控件之自定义状态管理

asp.net|服务器|控件 在前面的系列文章中,我们曾经介绍了视图状态和控件状态的基本概念和典型应用,从中可以发现,视图状态和控件状态对于自定义服务器控件实现的重要性.本文将继续这一主题,重点介绍实现视图状态和控件状态自定义管理的方法. 自定义视图状态管理 在介绍视图状态时,我们曾经提到过:对于简单属性,例如,String.Int等类型,.NET执行引擎将自动启用默认视图状态管理机制,以便完成相应的功能.然而,如果开发人员在ViewState中保存的是自定义数据类型,或者需要实现自定义方式优化

ASP.NET2.0服务器控件之自定义状态管理_实用技巧

     在前面的系列文章中,我们曾经介绍了视图状态和控件状态的基本概念和典型应用,从中可以发现,视图状态和控件状态对于自定义服务器控件实现的重要性.本文将继续这一主题,重点介绍实现视图状态和控件状态自定义管理的方法. 自定义视图状态管理 在介绍视图状态时,我们曾经提到过:对于简单属性,例如,String.Int等类型,.NET执行引擎将自动启用默认视图状态管理机制,以便完成相应的功能.然而,如果开发人员在ViewState中保存的是自定义数据类型,或者需要实现自定义方式优化视图状态管理时,则必

ASP.NET中的状态管理

asp.net 我们在ASP中能够通过cookie.查询字符串.应用程序.对话等轻易地解决这些问题.现在到了ASP.NET环境中,我们仍然可以使用这些功能,只是它们的种类更多了,功能也更强大了. 管理互联网网页主要有二种不同的方法:客户端和服务器端. 1.客户端的状态管理: 在客户端.服务器之间的多次请求-应答期间,服务器上不保存信息,信息将被存储在网页或用户的计算机上. A.Cookie cookie是存储在客户端文件系统的文本文件中或客户端浏览器对话的内存中的少量数据,它主要用来跟踪数据设置

ASP.NET客户端状态管理方式的优缺点

一般而言,HTTP协议是非状态服务,它不保存任何用户请求信息.直至NetScape开始使用Cookies来保存用户请求信息,Web应用程序有了极大的发展.现在ASP.NET程序员可以使用很多种方式来保存用户请求信息. 下面主要介绍ASP.NET关于客户端状态管理的几种方式. ASP.NET,提供了Cookies, QueryStrings (URL), Hidden fields, View State and Control state (ASP.NET 2.0),来管理客户端请求. 一.Co

WEB SERVICES状态管理

services|web WEB SERVICES状态管理 在默认情况下,.NET下的WEB SERVICES是无状态的.不过可以用ASP.NET提供的状态管理那就是SESSION和APPLICATION.这使得WEB SERVICES下状态管理变得简单了,只需使用WEBMETHOD属性的ENABLESESSION子属性就可[WEBMETHOD(ENABLESESSION=TRUE)] 服务端代码如下:[WebMethod(EnableSession= true)] public client

[Asp.Net]状态管理(Session、Application、Cache、Cookie 、Viewstate、隐藏域 、查询字符串)

原文:[Asp.Net]状态管理(Session.Application.Cache.Cookie .Viewstate.隐藏域 .查询字符串) Session:  1. 客户在服务器上第一次打开Asp.Net页面时,会话就开始了.当客户在20分钟之内没有访问服务器,会话结束,销毁session.(当然也可以在Web.config中设置缓存时间)可以在Global.aspx的Session_Start()事件处理程序中,可以初始化会话变量.在下面的实例中,名为mydata的会话状态被初始化为0:

ASP.NET状态管理之十一(视图状态ViewState)

视图状态是 ASP.NET 页框架默认情况下用于保存往返过程之间的页和控件值的方法.当呈现页的 HTML 形式时,需要在回发过程中保留的页的当前状态和值将被序列化为 Base64 编码的字符串,并输出到视图状态的隐藏字段中. 视图状态是 ASP.NET 页中的储存库,可以存储需要在回发过程中保留的值.例如,您可以将信息存储在视图状态中,下次将页面发送到服务器时,将会在页加载事件过程中访问这些信息. 您可以使用页的 ViewState 属性(此属性公开一个字典对象)来访问视图状态信息.由于视图状态

Asp.Net的状态管理:ViewState和Cookie

简介 HTTP协议是无状态的.从客户端到服务器的连接可以在每个请求之后关闭.但是一般需要把一些客户端信息从一个页面传送给另一个页面. 无状态的根本原因是:浏览器和服务器使用Socket通信,服务器将请求结果返回给浏览器后,会关闭当前Socket连接.而且服务器会在处理页面完毕后销毁页面对象. 应用层面的原因是:浏览器和服务器之间通信都遵守HTTP协议. Http协议是无状态的,不会记得上次和网页"发生了什么.服务器不记得上次给了浏览器什么. 对网站造成的影响:如果用户录入了一些信息,当跳转到下一