iT邦幫忙

DAY 23
3

ASP.NET 由淺入深系列 第 23

91之ASP.NET由淺入深 不負責講座 Day23 - UserControl與MasterPage

經過了Day14~Day22的洗禮,相信大家已經腦袋裡面都是OO來OO去,抽象來抽象去了...
接下來我們又要介紹比較實作面的東西了。

今天要介紹的是UserControl跟MasterPage,它們之間也有繼承與封裝的概念,
所以前面的OO概念,是不會白白浪費的。

至於SOLID原則,則是寫code的過程,應該要要求自己程式品質時的一個基準點。
UserControl
1.副檔名為.ascx,與網頁類似,但不能直接連接至user control

2.需要設計對外的property、function跟event,典型的封裝概念

3.也有control的事件生命週期

4.實作了INamingContainer:
識別在 System.Web.UI.Page 物件的控制項階層架構內建立新 ID 命名空間的容器控制項。
也就是放在UserControl裡面的控制項,ID會再加上container的ID當prefix。

5.可以在IDE就看到畫面

6.可重複使用(但較難跨專案使用),如電話控制項、地址控制項,跨專案使用,就是透過複製貼上。 也可以考慮設計成custom control,則只需要將dll拉至工具箱內即可。

7.User control之間的互動,請參考連結:http://www.dotblogs.com.tw/sin1980/archive/2009/09/27/asp1.aspx

8.動態新增user control注意事項
(1)[ASP.NET]動態新增User Control,並設定屬性值與取屬性值
(2)[ASP.NET]動態Load UserControl – part 2
(3)[Tips]UserControl動態新增時,轉型注意事項

MasterPage

1.繼承UserControl

2.各頁的aspx置放於ContentPlaceHolder中

<asp:ContentPlaceHolder ID="MainPlace" runat="server“ />

3.只是變形的UserControl,有套用MasterPage的頁面,只是把自己的內容放在ContentPlaceHolder中
(1)假設A頁與B頁有套MasterPage,由A頁導到B頁,這兩頁仍是不同的頁面
(2)與frame不同

4.MasterPage上也可以撰寫共用的function
如Tree、頁籤、共用按鈕、共用資訊等..就跟UserControl可以設定對外function一樣。

5.使用上小心效率問題
因為每個套用MasterPage,都會跑到相關程式

6.注意事項
(1)關於Content Page中加入CSS或JS檔的引用
參考:http://social.msdn.microsoft.com/Forums/zh-TW/236/thread/0deaae5c-46d9-40e4-83b8-e114c2db79f3

<script type="text/javascript" src='<%#ResolveUrl("~/JavaScript/jquery.cookie.js") %>'></script>



protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        Page.Header.DataBind();
    }

(2)巢狀 master pages架構下,取得master中物件的問題
參考:http://social.msdn.microsoft.com/Forums/zh-TW/236/thread/2eb55775-252c-464c-87d4-fa2b7ef14f45


上一篇
91之ASP.NET由淺入深 不負責講座 Day22 - DIP 依賴反轉原則
下一篇
91之ASP.NET由淺入深 不負責講座 Day24 - BasePage
系列文
ASP.NET 由淺入深30

尚未有邦友留言

立即登入留言