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

ASP.NET控件開發基礎(11)

編輯:關於ASP.NET

上一篇討論了集合屬性的使用,這一篇我們主要來討論視圖狀態的自定義管理.

剛開篇的時後在最後把屬性值用視圖狀態來保存時,得以把當前狀態保存下來,關於視圖狀態的概述,這裡不再累贅,沒了解過的朋友可以在MSDN裡輸入視圖狀態概述了解一下.以下我們還是以以前講過的內容為例,一起繼續來改善控件的使用(第五篇和第九篇的例子)

示例一

我們啟用了跟蹤,按下確定按鈕後,控件屬性發生變化,按下無事件按鈕後,控件狀態則恢復到之前的狀態,而且在跟蹤狀態下發現Custom無視圖狀態.

<%@ Page Language="C#" Trace="true" %>
<%@ Register Assembly="CustomComponents" Namespace="CustomComponents" TagPrefix="custom" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
   protected void Button1_Click(object sender, EventArgs e)
   {
     Custom1.Age = 21;
     Custom1.CustomMetier = Metier.教師;
     Custom1.CustomAddress.City = "杭州";
     Custom1.CustomAddress.State = "中國";
     Custom1.CustomAddress.Street = "街道";
     Custom1.CustomAddress.Zip = "310000";
   }
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
   <title>無標題頁</title>
</head>
<body>
   <form id="form1" runat="server">
   <div>
     <custom:Custom ID="Custom1" runat="server">
     </custom:Custom>
     <br />
     <br />
     <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="確定" />
     &nbsp; &nbsp;&nbsp;
     <asp:Button ID="Button2" runat="server" Text="無事件" />&nbsp;
   </div>
   </form>
</body>
</html>

那麼接下來將修改Custom的屬性更改為視圖狀態保存,代碼如下

重新編譯一下代碼,再次測試上面代碼Custom的Age和CustomMetier屬性可以保存其狀態,而無法保存CustomAddress這個復雜屬性的狀態值.這個也可以理解,我們沒有為CustomAddress的子屬性值保存在視圖狀態裡.啟動跟蹤後,還發現Custom控件在更改控件屬性後保存了一部分的視圖狀態.

屬性#region 屬性

[Description("年齡")]
     public int Age
     {
       get { return ViewState["Age"] != null ? (int)ViewState["Age"] : 0; }
       set { ViewState["Age"] = value; }
     }

     [Description("姓名")]
     public String Name
     {
       get { return ViewState["Name"] != null ? (string)ViewState["Name"] : string.Empty; }
       set { ViewState["Name"] = value; }
     }
     [TypeConverter(typeof(GameConverter))]
     [Description("喜歡的游戲")]
     public String Game
     {
       get { return ViewState["Game"] != null ? (string)ViewState["Game"] : string.Empty; }
       set { ViewState["Game"] = value; }
     }

     [Description("職業")]
     public Metier CustomMetier
     {
       get { return ViewState["CustomMetier"] != null ? (Metier)ViewState["CustomMetier"] : Metier.程序員; }
       set { ViewState["CustomMetier"] = value; }
     }

     #endregion

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