浅谈ASP.NET内部机制(七)2011-09-15 博客园 小洋前言:本篇讲解与视图ViewState相关的知识,包括IStateManager,自定义转换器TypeConvert,以及和 视图功能相同的控件状态。可以说本篇是对保存状态有关知识的总结,代码也详细的给出。自从上次写了有关视图的文章后,收到了很多朋友的邮件,很感谢大家的支持:)很多朋友都说要求 说说实践性更强的东西,所以本篇就进一步的来谈谈视图(不仅仅只是视图,而且在ASP.NET中的状态保 存的话题)。首先希望大家对自定义控件有一定的了解。大家可以去参看我的控件开发系列。首先我看从一个简单的控件开发来谈起,我们在ASP.NET有Login的登录控件,我们现在就来自己来实 现一个类似的控件,因为本篇主要讲述与视图有关的话题,所以关于事件冒泡等我们不提及,主要是为了 使得代码简洁,易懂,集中讲述一个问题。实现自定义Login控件有很多的方式,我这里会带着大家一步步的做,首先我们继承WebControl来实现 一个控件,然后我们再改进例子,我们来看看从WebControl继承的Login控件:using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq;
namespace CustomComponents { /**//// <summary> ///MyLogin 的摘要说明 /// </summary> public class MyLogin:WebControl { 属性#region 属性 public string UserName { get { return ViewState["UserName"] != null ? (string)ViewState["UserName"] : "UserName";
} set { ViewState["UserName"] = value; }
} public string UserPassword { get { return ViewState ["UserPassword"] != null ? (string)ViewState["UserPassword"] : "UserPassword";