Community Server页面布局

经过前两个文章的努力,我们已经能看到仅仅是一个空空的页面,在开发我们想要的功能之前一个合理的布局是非常必要的.

打开几个原有页面的原代码我们分现,CS的布局,全部是类似于,

 

 

Community Server页面布局<CS:MPContainer runat="server" id="MPContainer" ThemeMasterFile="LocalPhotosMaster.ascx" >
Community Server页面布局
<CS:MPContent id="bcr" runat="server">
Community Server页面布局1
Community Server页面布局
</CS:MPContent>
Community Server页面布局
<CS:MPContent id="lcr" runat="server">
Community Server页面布局2
Community Server页面布局
</CS:MPContent>
Community Server页面布局
<CS:MPContent id="rcr" runat="server" >
Community Server页面布局3
Community Server页面布局
</MPContent>
Community Server页面布局
</CS:MPContainer>

 

都是一个MPContainer包含了数个MPContent

我们可以把MPContainer看成是一个页面容器(从英文的字面意思上也就是这个意思),MPContent就是用来显示内容的区域,但是几个MPContent是怎么来确定各自在整个页面中的位置的呢?

可以看到,每个MPContent都有一个id属性,第个id属性都有一个bcr和lcr等不同的值.要弄清楚为什么只要设置一个相应的值,我们的内容就会自动出现在相应的位置,我们有必要了解一下CS所的模版机制,CS采用的是MetaBuilders.WebControls.MasterPages这个第三方的组件,在\source\Controls\ContentContainer.cs中CS采用了一个代理模式把这个组件引入,为什么用代理模式,说句古话叫以不变应万变,不用但心MetaBuilders.WebControls.MasterPages一个接口或一个方法的变更而要对我们的程序大动干戈.具体代理模式的好处还是请各位自已查查相关资料吧,CNBLOG上有许多这方面的文章,我这里就不细说了

打个ContentContainer.cs我们可以看到

 

public class MPRegion : MetaBuilders.WebControls.MasterPages.Region{} //为CS的中的控件注册位置,就是占个座,打个比方说我们国家刚开过的人大代表会议,不是每个桌子上都有个姓名牌么上面写着XXX,开会的时候XXX来了,就要坐在这个位置,而且这个位置只能坐一个人,坐两个人就挤了,在CS中也一样,第个MPRegion定义一个"ID"比如id="bcr"它就是哪块牌子,在MPContent中的id="bcr"中内容就要显示在这个位置,它就相当于开会的人了
public class MPContent : MetaBuilders.WebControls.MasterPages.Content{} 这个就是用来包括内容和控件的容器
public class MPForm : MetaBuilders.WebControls.MasterPages.NoBugForm {} 这个用来在客户端生成表单

 

了解到了这里,我们可能会疑问,为什么我们的LocalPhotosMaster.ascx中没有定义一个相应的MPRegion了,但是我们的内容还是正解的显示出来了, 这是因为,CS中第一个子模版都是继续自\source\Web\Themes\default\Masters\Master.ascx这个主模版,打开它就可以看到这些个MPRegion的定义了, 

 1Community Server页面布局<%@ Control Language="C#" %>
 2Community Server页面布局<%@ Import Namespace="CommunityServer.Components" %>
 3Community Server页面布局<%@ Register TagPrefix="CS" Namespace="CommunityServer.Controls" Assembly="CommunityServer.Controls" %>
 4Community Server页面布局<%@ Register TagPrefix="Blog" Namespace="CommunityServer.Blogs.Controls" Assembly="CommunityServer.Blogs" %>
 5Community Server页面布局<%@ Register TagPrefix="CSD" Namespace="CommunityServer.Discussions.Controls" Assembly="CommunityServer.Discussions" %>
 6Community Server页面布局<%@ Register TagPrefix="TWC" Namespace="Telligent.Web.UI" Assembly="Telligent.Web.UI" %>
 7Community Server页面布局<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> 
 8Community Server页面布局<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 9Community Server页面布局<CS:MPRegion id="HeaderRegion" runat="server">
10Community Server页面布局<CS:Head runat="Server">
11Community Server页面布局<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
12Community Server页面布局<CS:Style id="UserStyle" runat="server" visible = "true" />
13Community Server页面布局<CS:Style id="s2" runat="server" visible = "true" Href="../style/Common.css" />
14Community Server页面布局<CS:Style runat="server" Href="../style/common_print.css" media="print" />
15Community Server页面布局<CS:Script id="s" runat="server" />
16Community Server页面布局</CS:Head>
17Community Server页面布局</CS:MPRegion>
18Community Server页面布局<body>
19Community Server页面布局<CS:MPForm runat="server">
20Community Server页面布局<TWC:Modal runat="server" CssClasses="CommonModal" TitleCssClasses="CommonModalTitle" CloseCssClasses="CommonModalClose" ContentCssClasses="CommonModalContent" FooterCssClasses="CommonModalFooter" ResizeCssClasses="CommonModalResize" MaskCssClasses="CommonModalMask" LoadingUrl="~/utility/loading.htm" /> 
21Community Server页面布局<CS:MPRegion id="bscr" runat="server" />
22Community Server页面布局<div id="CommonOuter"><div id="Common">
23Community Server页面布局<div id="CommonHeader">
24Community Server页面布局<CS:MPRegion id="bhcr" runat="server" >
25Community Server页面布局<CS:TitleBar runat="server" id="t" />
26Community Server页面布局</CS:MPRegion>
27Community Server页面布局</div> 
28Community Server页面布局
29Community Server页面布局<div id="CommonBody">
30Community Server页面布局<table cellspacing="0" cellpadding="0" border="0" width="100%" id="CommonBodyTable">
31Community Server页面布局<tr>
32Community Server页面布局<td valign="top" id="CommonLeftColumn">
33Community Server页面布局<CS:MPRegion id="lcr" runat="server" />
34Community Server页面布局</td>
35Community Server页面布局<td valign="top" width="100%" id="CommonBodyColumn"><table cellpadding="0" cellspacing="0" border="0" style="table-layout: fixed;" width="100%"><tr><td>
36Community Server页面布局<CS:MPRegion id="bcr" runat="server" />
37Community Server页面布局</td></tr></table></td>
38Community Server页面布局<td valign="top" id="CommonRightColumn">
39Community Server页面布局<CS:MPRegion id="rcr" runat="server" />
40Community Server页面布局</td>
41Community Server页面布局</tr>
42Community Server页面布局</table>
43Community Server页面布局</div>
44Community Server页面布局<div id="CommonFooter">
45Community Server页面布局<CS:MPRegion id="BodyFooterRegion" runat="server" >
46Community Server页面布局<CS:Footer runat="server" id="Footer1"/>
47Community Server页面布局</CS:MPRegion>
48Community Server页面布局</div>
49Community Server页面布局</div></div>
50Community Server页面布局</CS:MPForm>
51Community Server页面布局<CS:MPRegion id="outsidetheform" runat="server" />
52Community Server页面布局</body>
53Community Server页面布局</html> 
54Community Server页面布局


当然如我们相要显示更多的内容可以在自己的子模版内添加MPRegion来增加一些座位




    本文转自无心之柳.NET博客园博客,原文链接:http://www.cnblogs.com/9527/archive/2007/03/30/694603.html,如需转载请自行联系原作者



上一篇:交互式分析(Hologres)2020年5月刊


下一篇:阿里云心选建站(个人或企业建站)