程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 淺談ASP.NET內部機制(七)

淺談ASP.NET內部機制(七)

編輯:關於ASP.NET

前言:本篇講解與視圖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";

                         }
                        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();
                 }
        }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved