博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Community Server页面布局
阅读量:5990 次
发布时间:2019-06-20

本文共 4424 字,大约阅读时间需要 14 分钟。

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

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

 

 

None.gif
<
CS:MPContainer 
runat
="server"
 id
="MPContainer"
 ThemeMasterFile
="LocalPhotosMaster.ascx"
 
>
None.gif
<
CS:MPContent 
id
="bcr"
 runat
="server"
>
None.gif1
None.gif
</
CS:MPContent
>
None.gif
<
CS:MPContent 
id
="lcr"
 runat
="server"
>
None.gif2
None.gif
</
CS:MPContent
>
None.gif
<
CS:MPContent 
id
="rcr"
 runat
="server"
 
>
None.gif3
None.gif
</
MPContent
>
None.gif
</
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的定义了, 

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

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

    本文转自无心之柳.NET博客园博客,原文链接:http://www.cnblogs.com/9527/archive/2007/03/30/694603.html
,如需转载请自行联系原作者
你可能感兴趣的文章
【原创】基于部署映像服务和管理(DISM)修改映象解决WIN7 USB3.0安装时报错
查看>>
linux杀掉80端口线程命令
查看>>
QT线程初次使用。遇到的问题。
查看>>
烦恼的高考志愿
查看>>
根据矩阵变化实现基于 HTML5 的 WebGL 3D 自动布局
查看>>
查询数据库连接数
查看>>
CROSS APPLY和 OUTER APPLY 区别详解
查看>>
C# 使用Shell32 进行压缩与解压缩的标准且正确做法
查看>>
PHP如何实现页面静态化
查看>>
HDU 4371 Alice and Bob
查看>>
软测第一次lab 实验报告
查看>>
Hadoop分布式文件系统:架构和设计要点 - 转
查看>>
4.EGit基本用法
查看>>
Android FrameWork——Binder机制详解(2)
查看>>
74HC165级联
查看>>
面向对象的Shell脚本
查看>>
那一抹秋色!漂亮的秋天风景壁纸【组图】
查看>>
解密gzip压缩的网页数据流(转)
查看>>
手工建库
查看>>
Vue beforeRouteEnter 的next执行时机
查看>>