曾听到朋友报怨ASP.NET FORUMS2.0中因为使用了MetaBuilders使得化码不太直观,呵,有利有有弊,使用这个控件目的
在于统一界面。
比方说在管理页面中一般都会分成左右两栏,在ASP.NET可能比较常用的方法有两种,一种是使用框架,还有一种是
使用一个表现左边的asxc来统一。
那么使用了MetaBuilders之后是一种什么情况呢?我觉得和使用了框架页面差不多,不过里面没有了分栏,
页面看起来是一个整体,页面变成了一个容器,包含了其他的一些分页,这种做法就要比使用asxc来统一页面
来说要便于管理。
在Thems\AdminMasterPage.ascx中
<table width="100%" cellSpacing="7">
<tr>
<td valign="top" width="170">
<Forums:AdminNavigation runat="server" />
</td>
<td valign="top">
<mp:region id="AdminContent" runat="server"><p>Default main content</p></mp:region>
</td>
</tr>
</table>
在页面的右边他定义了id="AdminContent"
也就是说在这个时候你并不知道你的左边是什么,这个ascx就是一个容器。
这应该是ASP.NET FORUMS中一个比较普遍的调用机制,都是先直接调某一个内容,然后再查找反调上级容器
接着以Admin\SiteSettings.aspx为例
在超链接中都是直接调用这个文件,但这个文件却只是右边显示的内容,他通过
<mp:ContentContainer runat="server" id="MPContainer" MasterPageFile="~/Themes/AdminMasterPage.ascx">
去查找他的父容器。
通过
<mp:Content id="AdminContent" runat="server">
说明他将替换父容器中的那个组件。
顺便说一下今天接触的代码分离方法和以前又有所不同,以前是通过类去找皮肤,而这几个是没有皮肤的
都直接带有自己的cs文件,然后在Components中有一个相应的实体类。