動態載入使用者控制項的組件!(三)

來源:互聯網
上載者:User
動態|載入|控制項 上一篇文章寫到動態載入使用者控制項的簡單應用

頁面是用來瀏覽資訊的!但是更重要的是和使用者互動,根據不同的需求提供不同的內容服務,這是一種服務或是一種更貼近使用者的人性化。(又在胡言亂語了!^_^)

動態載入葉面,根據不同的使用者權限載入不懂的內容服務。根據使用者的相應載入相應的內容服務。

還有另外一個應用就是做到頁面與代碼的分離。在vs2003裡,一般ascx或aspx檔案,在剛建立的時候都直接跟一個cs檔案關聯。那麼我們在寫程式的時候就不能分開來做。作葉面和寫後台代碼的不能分開。為了能夠做到作業面與作後台代碼的能完全分開來,我們可以把背景所有代碼當作一個組件來做就可以了!這樣一個不用跟cs檔案關聯的aspx葉面檔案直接引用一個組件就可以了!那麼組件可以載入不同的ascx檔案最後組成一個完整的葉面。就這樣一個項目的開發就像個機車製造廠一樣組裝不同的零件就有輛車出來了。軟體也可以拿來組裝,零件我們也可以訂製,最後整體就可以出來了!(常常看別人的文章的時候怎麼就覺得廢話那麼多,原來發現我廢話也不少!^_^)

好!讓我們step by step ,就從不需要關聯cs檔案的aspx葉面開始吧!(在vs2005裡,我建立aspx葉面的時候就直接沒有cs檔案關聯。但是直接有個不完整類型隱藏起來了。怎麼用基類就成為問題了!隱藏部分應該是繼承了Page了!那麼根據單繼承的原則我們是不能在繼承別的類型的了。這個問題有待研究。)

根據aspx葉面運行原理。葉面要跟服務端互動必須通過一個run at server的form標籤才能行得通。因此我不要先來寫個form組件,那麼form就應該是個容器的形勢來承載葉面所有要與服務端互動的元素,(容器太重要了,namespace也可以看作容器,只不過是不能放東西而已,是虛擬容器)

1、做form容器組建:繼承繼承他就行了,注意一點就是唯一ID的問題。自己繼承的可能該改變了ID,那麼回傳的時候就找不到了啊。切記!當然render葉面的時候是通過遍曆所有form容器內所有的組件來一個個render出來。所以要改UniqueID。

樣本一下:

using System;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.ComponentModel;



namespace Region.Controls {



public class MyForm : System.Web.UI.HtmlControls.HtmlForm {



public override string UniqueID {

get {

if (this.NoNameContainer && this.NamingContainer != this.Page ) {

return base.UniqueID.Substring(base.UniqueID.LastIndexOf(":")+1);

} else {

return base.UniqueID;

}

}

}



protected override void RenderAttributes(HtmlTextWriter writer) {

this. NoNameContainer = true;

base.RenderAttributes (writer);

this. NoNameContainer = false;

}



protected override void RenderChildren(HtmlTextWriter writer) {

this. NoNameContainer = true;

base.RenderChildren (writer);

this. NoNameContainer = false;

}



private Boolean NoNameContainer = false;

}

}





相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。