小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

動態(tài)加載用戶控件的組件?。ㄈ?/span>

 素行 2007-03-17
   上一篇文章寫到動態(tài)加載用戶控件的簡單應(yīng)用

    頁面是用來瀏覽信息的!但是更重要的是和用戶交互,根據(jù)不同的需求提供不同的內(nèi)容服務(wù),這是一種服務(wù)或是一種更貼近用戶的人性化。(又在胡言亂語了!^_^

動態(tài)加載葉面,根據(jù)不同的用戶權(quán)限加載不懂的內(nèi)容服務(wù)。根據(jù)用戶的相應(yīng)加載相應(yīng)的內(nèi)容服務(wù)。

還有另外一個應(yīng)用就是做到頁面與代碼的分離。在vs2003里,一般ascxaspx文件,在剛建立的時候都直接跟一個cs文件關(guān)聯(lián)。那么我們在寫程序的時候就不能分開來做。作葉面和寫后臺代碼的不能分開。為了能夠做到作業(yè)面與作后臺代碼的能完全分開來,我們可以把后臺的所有代碼當(dāng)作一個組件來做就可以了!這樣一個不用跟cs文件關(guān)聯(lián)的aspx葉面文件直接引用一個組件就可以了!那么組件可以加載不同的ascx文件最后組成一個完整的葉面。就這樣一個項目的開發(fā)就像個機車制造廠一樣組裝不同的零件就有輛車出來了。軟件也可以拿來組裝,零件我們也可以訂制,最后整體就可以出來了?。ǔ3?磩e人的文章的時候怎么就覺得廢話那么多,原來發(fā)現(xiàn)我廢話也不少!^_^

好!讓我們step by step ,就從不需要關(guān)聯(lián)cs文件的aspx葉面開始吧!(在vs2005里,我新建aspx葉面的時候就直接沒有cs文件關(guān)聯(lián)。但是直接有個不完整類型隱藏起來了。怎么用基類就成為問題了!隱藏部分應(yīng)該是繼承了Page了!那么根據(jù)單繼承的原則我們是不能在繼承別的類型的了。這個問題有待研究。)

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

1、做form容器組建:繼承繼承他就行了,注意一點就是唯一ID的問題。自己繼承的可能該改變了ID,那么回傳的時候就找不到了啊。切記!當(dāng)然render葉面的時候是通過遍歷所有form容器內(nèi)所有的組件來一個個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;

    }

}

 

 

 

未完(持續(xù))

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多