日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Community Server系列之三:页面间关系2[介绍]

發布時間:2023/12/18 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Community Server系列之三:页面间关系2[介绍] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

???????CS中幾乎所有的頁面都是靠模板的呈現方式來實現的,那么CS中有些什么樣的模板呢,讓我們看看CS中的模板機制吧:

?????? 在我們使用IDE打開Default.aspx頁面時,我們僅僅看到一些毫無順序的控件,幾乎看不到控制布局的Html標簽,不要困惑,因為在CS中UI層也是按照模板思想分層實現的。先來看看幾個類的實現:

打開\src\Controls\ContentContainer.cs

這個文件里分別實現了

public class MPContainer : MetaBuilders.WebControls.MasterPages.ContentContainer{…}

public class MPRegion : MetaBuilders.WebControls.MasterPages.Region{}

public class MPContent : MetaBuilders.WebControls.MasterPages.Content{}

public class MPForm : MetaBuilders.WebControls.MasterPages.NoBugForm {}

public class MPScript : System.Web.UI.WebControls.PlaceHolder {}

這些類前四個都繼承自MetaBuilders.WebControls.MasterPages,那么為什么CS不直接使用這些控件呢,因為這是第三方控件,主動權不在CS中,CS為了隔離控件變動使用了代理模式,這樣就可以在程序里使用統一的方法,不用擔心以后第三方控件的變動了,同樣,在CS系統里還大量運用了此模式,比如在使用FreeTextBox的時候不是直接使用,而是通過Telligent.FreeTextBoxWraper這個類進行封裝隔離,并且同時繼承自ITextEditor接口,這樣程序里面在需要用到文本編輯器的時候只需要引入此接口根據配置加載文本編輯器包裝類就可以了,這樣處理之后撤卸和安裝新擴展都會很容易,如果對此模式還不甚了解的話,我會在后面章節介紹這里的原理。

??? 好了,了解了這么幾個控件類之后就看我們怎樣在程序里面使用了,首先簡單介紹一下這幾個控件類的作用吧:

MPRegion:向頁面進行注冊的控件,這有點類似于那些大型的新聞靜態頁面發布系統的標識符,生成靜態頁面的時候根據標識符替換相應的動態數據。

MPForm :作用很簡單,就是為客戶端生成Form標簽。

MPContainer :包容MPContent控件的容器控件。

MPContent:此控件的ID只要和在Master頁面設置的MPRegion控件的ID一致,那么此控件中的內容便自動嵌入到MPRegion控件的位置了,此控件必須用在MPContainer之內。

簡單介紹了這些控件之后如果你是初次接觸CS那么肯定還會很迷糊,別急,讓我們先了解在CS中模板的“繼承”關系,雖然不是嚴格的繼承但我們可以這樣理解,讓我們打開具體的風格文件夾在這里我們看看在\src\Web\Themes\default\文件夾下的Masters文件夾,此文件夾下大部分都是以Master命名的ascx文件不難從名字可以看出,最主要的文件當然是Master.ascx了,這是所有頁面都需要引用的主模板,根據繼承的概念我們應該清楚在此文件里應該放一些每個頁面都需要用到的Html標簽等等,比如頁頭,公用樣式,頁面的布局頁角以及Form標簽等等,如下面的代碼:

Master.ascx
<!DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Frameset//EN"?"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">?
<html?xmlns="http://www.w3.org/1999/xhtml"?xml:lang="en"?lang="en">
????
????<CS:MPRegion?id="HeaderRegion"?runat="server"?>
????
????<CS:Head?runat="Server">
????????<meta?http-equiv="Content-Type"?content="text/html;?charset=iso-8859-1">
????????<CS:Style?id="UserStyle"?runat="server"?visible?=?"true"?/>
????????<CS:Style?id="s2"?runat="server"?visible?=?"true"?Href="../style/Common.css"?/>
????????<CS:Style??runat="server"?Href="../style/common_print.css"?media="print"?/>
????????<CS:Script?id="s"?runat="server"??/>
????</CS:Head>
????
????</CS:MPRegion>
????<body>
????????<CS:MPForm?runat="server">
????????????<CS:MPRegion?id="bscr"?runat="server"?/>
????????????????<div?id="Common">
????????????????????<div?id="CommonHeader">
????????????????????????<CS:MPRegion?id="bhcr"?runat="server"?>
????????????????????????????<CS:TitleBar?runat="server"?id="t"?/>
????????????????????????</CS:MPRegion>
????????????????????</div>

????????????????????<div?id="CommonBody">
????????????????????????<table?cellspacing="0"?cellpadding="0"?border="0"?width="100%"?id="CommonBodyTable">
????????????????????????????<tr>
????????????????????????????????<td?valign="top"?id="CommonLeftColumn">
????????????????????????????????????<CS:MPRegion?id="lcr"?runat="server"?/>
????????????????????????????????</td>
????????????????????????????????
????????????????????????????????<td?valign="top"?width="100%"?id="CommonBodyColumn">
????????????????????????????????????<CS:MPRegion?id="bcr"?runat="server"?/>
????????????????????????????????</td>
????????????????????????????????
????????????????????????????????<td?valign="top"?id="CommonRightColumn">
????????????????????????????????????<CS:MPRegion?id="rcr"?runat="server"?/>
????????????????????????????????</td>
????????????????????????????</tr>
????????????????????????</table>
????????????????????</div>
????????????????
????????????????????<div?id="CommonFooter">
????????????????????????<CS:MPRegion?id="BodyFooterRegion"?runat="server"?>
????????????????????????????<CS:Footer?runat="server"?id="Footer1"/>
????????????????????????</CS:MPRegion>
????????????????????</div>
????????????????</div>
????????????</CS:MPRegion>
????????</CS:MPForm>
????</body>
</html>

??????? 從代碼中我們可以看出MPRegion和MPForm這兩個元素,也就是告訴“繼承”自這個頁面的控件什么地方應該嵌入什么。比如<CS:MPRegion id="HeaderRegion" runat="server" >這個標簽表示如果子頁面有id為HeaderRegion的MPContent這個控件對象的時候,那么此控件中的內容將插入到此處替換調默認的內容,如果子頁面不存在此ID的MPContent的話則使用此標簽內的內容。

??????? 其他文件,比如HomeMaster.ascx文件表示首頁的模板,此模板的基本模板還是使用Master.ascx這就好比類的繼承關系,Master是基類,HomeMaster是首頁的基類,default.aspx則是繼承自HomeMaster的子類,只是需要在首頁的MPContainer標簽處標明使用哪一個模板即可,如<CS:MPContainer runat="server" id="Mpcontainer1" ThemeMasterFile = "HomeMaster.ascx" >一個好處就是盡量減少了重復的公用HTML標簽,另外一個好處是頁面可以分層,比如在設計一個較復雜的首頁時,我們可以把大量的復雜的Html標簽放在HomeMaster只在需要插入動態內容的地方注冊MPRegion標簽,這樣做后我們只需要在首頁里使用MPContent包含相應的動態內容而不需要被復制的Html標簽搞昏了頭。這就是為什么我們初次打開首頁幾乎看不到控制首頁格式的HTML標簽的原因。同理,其他模塊也是如此這般,這里就不冗訴了。

轉載于:https://www.cnblogs.com/Dragonpro/archive/2006/04/24/383900.html

總結

以上是生活随笔為你收集整理的Community Server系列之三:页面间关系2[介绍]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。