Community Server页面布局

简介:

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

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

 

 

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


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




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



相关文章
|
3天前
|
开发框架 缓存 .NET
C# 一分钟浅谈:Blazor Server 端开发
Blazor Server 是基于 ASP.NET Core 的框架,允许使用 C# 和 Razor 语法构建交互式 Web 应用。本文介绍 Blazor Server 的基本概念、快速入门、常见问题及解决方案,帮助开发者快速上手。涵盖创建应用、基本组件、数据绑定、状态管理、跨组件通信、错误处理和性能优化等内容。
10 1
|
网络协议 Shell 数据安全/隐私保护