aspnet forums界面的最关键的问题首先在于它使用了MetaBuilders的Master Pages 控件.
到http://www.metabuilders.com/Tools/MasterPages.aspx处下载此控件来研究一下:

一、Master Pages包括四个类:

(1)Content: This control contains the content for a particular region 
            此类控件包含真实内容

(2)ContentContainer: This control serves two distincts purposes: - it marks the location where the Master Page will be inserted into the Page - it contains the various Content sections that will be matched to the Master Page's Region controls (based on their ID's).
                    此控件有两个意图:
                    ·作为一个定位标志,标识Master Page将被插入到页中;
                    ·与Region Controls相匹配

(3)NoBugForm: A server form that does not cause a problem by being inside a master page or other naming container.
             无错form。可以放心使用

(4)Region: The control marks a place holder for content in a master page 
           占位控件

二、我们通过分析default.aspx来看看Master Page使用方式
(1)default.aspx的内容如下:

<mp:ContentContainer runat="server" id="MPContainer" MasterPageFile="~/Themes/MasterPage.ascx"> 
    <mp:Content id="HeadTag" runat="server"> 
        <meta http-equiv="Refresh" content="300" /> 
    </mp:Content> 
    <mp:Content id="MainContent" runat="server"> 
        <Forums:ForumGroupView runat="server" /> 
    </mp:Content> 
</mp:ContentContainer> 

mp:ContentContainer是一个容器,MasterPageFile="~/Themes/MasterPage.ascx是它最重要的属性,指向了一个ascx控件页。其实,这个ascx控件并不是一个真的ascx控件,而是一个页面框架。它提供了default.aspx页面的主结构,然后在其中留出了空白,让default.aspx来填空。

(2)再来仔细看看masterpage.ascx的内容

<html> 
<head> 
<!--标题--> 
<Forums:PageTitle runat="server" /> 
<!--风格定义--> 
<Forums:Style id="Style1" runat="server" /> 
<!--头标签--> 
<mp:region id="HeadTag" runat="server" /> 
</head> 

<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> 

<!-- ********* NoBugForm:START ************* //--> 
<mp:NoBugForm runat="server"> 

<mp:region id="MainContent" runat="server">Default main content</mp:region> 

</mp:NoBugForm> 
<!-- ********* NoBugForm:END ************* //--> 

<!-- ********* Footer:START ************* //--> 
<Forums:Footer runat="server" /><br /> 
<!-- ********* Footer:END ************* //--> 
</body> 
</html> 

首先,它有html文件的<head>,在<head>中留下了不小的地方放自定义控件,Forums:PageTitle 和Forums:Style
然后,在Body中有一个NoBugForm,这个的作用先猜测一下,可能是指用于mp控件的form。
最为重要的是它有一个
<mp:region id="MainContent" runat="server">Default main content</mp:region>
region是一个占位控件,它给谁占的位置呢?看看default.aspx就明白了:

<mp:Content id="MainContent" runat="server">
   <Forums:ForumGroupView runat="server" />
</mp:Content>

看到了吗?content中的id与region的id相匹配。结果,default.aspx将会在这儿显示出来。
 
三、优点考虑:
现在看来master pages的结构也相对简单。但为什么要使用这种方式而不是直接使用ascx控件呢?
关键在于换肤。
asp forums为了实现换肤的方便而使用了一个专门的ascx文件作为框架页。而通常的ascx文件是不可能作为框架页的,它只能是一个页面中的一部分,我们还需要一个aspx或html文件作为框架页。如果框架页改变了,则所有使用此框架的页面全部都要改过。这在dreamweaver中可以使用模板来实现,但也相当不方便。(我没有用过模板,只知道其是自动更改使用模板的页)但使用期master pages结构后只需要改变一个文件或几个文件就可以实现。

关于asp.net 2.0 的MasterPage,可以参考:
http://www.microsoft.com/taiwan/msdn/library/2004/oct-2004/masterpages.htm

转载于:https://www.cnblogs.com/fanrsh/archive/2006/06/01/414820.html

了解Master Pages库相关推荐

  1. ASP.net 2.0 Migrating系列 - Master Pages 感触

    ASP.net 2.0 Migrating系列 - Master Pages范维肖 在Visual Web Developer 2005里的新建里多了一个Master Pages,在微软的VWD200 ...

  2. ASP.NET MVC Tip #31: 给 Master Pages 和 User Controls 传递数据

    原文地址:ASP.NET MVC Tip #31 – Passing Data to Master Pages and User Controls 原文作者:swalther 本文译者:QLeelul ...

  3. 母版页(Master Pages)--轉載

    母版页(Master Pages) http://blog.csdn.net/iiboy/ ASP.NET 1.x中最突出的缺点之一是它缺少对页面模板的支持.欠缺的是定义其他页面可以继承的" ...

  4. 【原】母版页、皮肤、导航 那点事 Master Pages Themes and Navigation Controls FAQ

    最近比较忙,工作几乎无法喘息,突然闲置了一会,想想也好久没有发博客了,得写几篇了,最近好像灵感突然消失了,不管了,先发一篇吧,这篇肯定对大伙要帮助,好的话,您给我顶一个,不好,你也不要保留,直接告诉我 ...

  5. 母版页(Master Pages)

    ASP.NET 1.x中最突出的缺点之一是它缺少对页面模板的支持.欠缺的是定义其他页面可以继承的"母版页"能力.开发人员通过使用用户控件(它们可以容易地在页面之间复制)创建页面来弥 ...

  6. MOSS 2007基础:WSS 3.0 中的母版页(Master Pages)和内容页(Content Pages)

    原文地址:http://robgarrett.com/cs/blogs/software/archive/2006/07/03/2065.aspx 这篇很短的文章展示了ASP.NET2.0中的母板页和 ...

  7. Asp.Net Forums研究文章集合(收藏)

    Asp.Net Forums研究文章集合 Asp.Net Forums是如何实现代码分离和换皮肤的 http://www.cnblogs.com/dotey/archive/2004/05/28/11 ...

  8. 10月1日之后,你新建的GitHub库默认分支不叫「master」了

    点击上方"视学算法",选择加"星标" 重磅干货,第一时间送达 本文转载自:机器之心  |  作者:张倩.杜伟 从 2020 年 10 月 1 日开始,GitHu ...

  9. 快速搭建一个自己的个人博客(Github Pages~二次元主题)

    目录 前言 技术简单过 Github Pages 的部署(个人网址的托管) 1.创建自己github的Pages(并把项目拉下来自己测试跑) ①.安装环境和拉取项目 ②.创建自己github的Page ...

最新文章

  1. VOC2007基本信息
  2. Flink中GroupWindow和OverWindow各自的作用+window体系+文档阅读方式
  3. 【C#】使用DWM实现无边框窗体阴影或全透窗体
  4. Spring内建可查找的依赖
  5. assign ur here php,ecshop源码分析01
  6. 计算机仿真题液相色谱,液相色谱法
  7. 电压、电流检测方法介绍
  8. linux外设驱动实现专栏:各虚拟外设驱动代码实现集合
  9. 人工智能(AI)第一节课总结
  10. 【计算机组成原理】:计算机系统的组成和层次
  11. raspberry pi_Raspberry Pi入门指南
  12. Apache Ranger安全区介绍
  13. 搭建一个属于自己的博客平台
  14. 国内无代码开发平台功能对比
  15. BAPI_ACC_DOCUMENT_CHECK BAPI_ACC_DOCUMENT_POST BAPI_TRANSACTION_COMMIT
  16. Shiro角色和权限管理
  17. php json_decode gbk,,json_decode含gbk字串
  18. 超出三行部分用省略号显示_如何用三行数学建立神经网络
  19. 论文精读2: Ground-to-Aerial Image Geo-LocalizationWith a Hard Exemplar Reweighting Triplet Loss
  20. PowerPoint中换行时怎样使英文单词不分开

热门文章

  1. mysql提示符prompt的用法
  2. Windows锁定计算机C代码编程实现
  3. 19、Cocos2dx 3.0游戏开发找小三之Action:流动的水没有形状,漂流的风找不到踪迹、、、...
  4. sersync进行实时同步数据
  5. 查看mysql数据库的主机_MySQL查看或显示数据库(SHOW DATABASES语句)
  6. movavi video suite2020中文版
  7. 硬盘FAT32转NTFN格式的命令
  8. 2017年第八届蓝桥杯【C++省赛B组】
  9. (转)mysql帮助命令使用说明
  10. CoreLocation MKMapView