浅谈ASP.NET内部机制(八)2011-09-15 博客园 小洋前言:之前几篇文章写了有关视图的知识,也讲述了如何实现IStateManager接口。本篇将讲解如何实 现自定义转换器。当然了,有大量的代码演示!本篇算是有关视图机制的终结篇,还会讲解有关 ControlStatel控件状态的实现。有个小插曲,其实之前我已经把文章写了一大半,不知道怎么回事,IE出了问题,自动关闭了,真是 心痛阿,现在得重写一遍。我想每个写博文的朋友都有这样的经历吧,写一篇文章真的很不容易!在上篇中,我们讲解了如何在一个自定义控件中保存自定义类的属性,我现在再次把代码贴出来,免 得大家去翻页。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";
                         }
                        set
                        {
                                ViewState["UserPassword"] = value;
                        }
                }
                #endregion
                protected override HtmlTextWriterTag TagKey
                {
                        get
                        {
                                return HtmlTextWriterTag.Table;
                        }
                }
                protected override void RenderContents(HtmlTextWriter writer)
                {
                        //显示用户名
                        writer.RenderBeginTag (HtmlTextWriterTag.Tr);
                        writer.RenderBeginTag (HtmlTextWriterTag.Td);
                        writer.Write(UserName);
                        writer.RenderEndTag();
                        writer.RenderBeginTag (HtmlTextWriterTag.Td);
                        writer.AddAttribute (HtmlTextWriterAttribute.Id, "txtUserName");
                        writer.AddAttribute (HtmlTextWriterAttribute.Type, "text");
                        writer.RenderBeginTag (HtmlTextWriterTag.Input);
                        writer.RenderEndTag();
                        writer.RenderEndTag();
                        writer.RenderEndTag();
                         //显示用户密码
                        writer.RenderBeginTag (HtmlTextWriterTag.Tr);
                        writer.RenderBeginTag (HtmlTextWriterTag.Td);
                        writer.Write(UserPassword);
                        writer.RenderEndTag();
                        writer.RenderBeginTag (HtmlTextWriterTag.Td);
                        writer.AddAttribute (HtmlTextWriterAttribute.Id, "txtPassword");
                        writer.AddAttribute (HtmlTextWriterAttribute.Type, "text");
                        writer.RenderBeginTag (HtmlTextWriterTag.Input);
                        writer.RenderEndTag();
                        writer.RenderEndTag();
                        writer.RenderEndTag();
                         //显示登录按钮
                        writer.RenderBeginTag (HtmlTextWriterTag.Tr);
                        writer.AddAttribute (HtmlTextWriterAttribute.Colspan, "2");
                        writer.AddAttribute (HtmlTextWriterAttribute.Align, "center");
                        writer.RenderBeginTag (HtmlTextWriterTag.Td);
                        writer.AddAttribute (HtmlTextWriterAttribute.Id, "btnSubmit");
                        writer.AddAttribute (HtmlTextWriterAttribute.Type, "submit");
                        writer.AddAttribute (HtmlTextWriterAttribute.Value, "Login");
                        writer.RenderBeginTag (HtmlTextWriterTag.Input);
                        writer.RenderEndTag();
                        writer.RenderEndTag();
                        writer.RenderEndTag();
                 }
        }
}