Smile 笑容

在 ASP.Net中实现Master Pages(模板)

  在php的世界可以有fastemplate模板,Smarty模板等等,让我这样的php爱好者可以很自由的去制作一些东西。工作需要,开始接触Asp.net,多么的希望在asp.net下也可以自由的使用smarty的模板。

在 ASP.Net中实现Master Pages(模板)

注:阅读和理解一份英文资料就是一个翻译的过程。只要把你的思想记录下来,那么就是一个不错的译文。
笑容原创,转载著名来自:http://www.oo8h.com/news_375.html

综述

MasterPage是微软公司Asp.net团队自己开发的一个在asp.net平台下,模板技术的一个解决方案。

下载Master Pages控件和实例程序
地址 http://www.asp.net/ControlGallery/default.aspx?Category=40&tabindex=2
修正,上面地址是一个列表,可以使用下面地址直接打开PasterPage包的下载说明页面:
http://www.asp.net/ControlGallery/ControlDetail.aspx?Control=385&tabindex=2

这个例子示范了在Asp.Net如何实现Master Pages。这是一份虚拟继承、Page继承、或者是Page模板(Template)的参考资料。

什么是Master Pages ?

MasterPages是一个普通的服务器控件集合。还有一个小例子程序一起可以在微软的ASP.net控件下载区下载到。

大多网站都会设计一个计划页面,也就是我们常说的模板页面(The Master Page)。所有页面都使用了这个页面的风格(或直接使用这个模板),不需要使用很多个重复相同的Html页面。

例如说,每个页面都会有相同的页眉(Head 或者Nav 导航条)、页脚(Footer,联系我们之类的相同的底部),只有每个页的实际内容会发生改变。Asp.Net 没有直观的对于这种问题的解决方案,但是,我们可以通过使用User Control 来轻松快速的实现这个目的。

总结:简单点说,MasterPage是用来简单的实现模板技术的一个UserControl(用户自定义控件)。

这个例子里都包含了些什么?

最重要的文件是 MasterPages.cs 它是最基本的PasterPage的框架,是它使MasterPage这个技术可以工作的。你可以直接使用这个文件,也可以根据你的需要去改编成更适合自己需要的版本。代码包里包含了mk.bat是用来编译MasterPages.cs的,一个使用MasterPage的例子被包含在这里面。TestMasterPage.ascx 和 TestPage.aspx 就是这个实际使用的例子,这个例子将成为把MasterPage技术使用到你的程序里的一个起点。

它是一个和其他模板方法截然不同的,因为它使用用户定义控件(UserControl)来代替必须先建立并编译的定制基本页面类(custom base page class)。 设计者可以简单的建立(使用User Control作为 Template)模板,标记成一个“区域”( "Regions"),然后添加相应的“内容”("Content")到"ContentContainer"控件中。使用MasterPages 空间组,基本上不需要写任何代码。 

为什么使用MasterPages技术?

  1. 它是及其灵活的。它自动支持多个区域,可以用于标准的模板内容、嵌套模板和重复模板。
  2. 它很容易使用,只是使用用户控件,不需要编写代码。
  3. 可以让开发者抛开UI设计功能类。
  4. 它可能会演变成asp.net的官方类出现。

如何使用这个框架

  • 主要的版面规划定义在一个用户控件中(User Control ,ascx file)。这是一个违背了正常UserControl的使用规则的做法。大多数时候一个UserControl是被渲染和显示在一个页面中的,但是在这里,完全是不一样的。
  • 每个页面都要做的一些事情是准备自己要显示的内容,然后做一些每个页都要做的相同的事情就是:
    • 定义顶级标志(Tag)使用MasterPageFile属性,定义其MasterPage (ascx页)文件。
    • 这个标记包含了一个或多个自定义内容(MasterPage)通过不同的ID来进行标志。
    • 这些标记不能访问父一级和以上的标记(Tag、MasterPage),如果你这么做,将会有错误发生。

指导如何建立和运行这个例子

MasterPages的问题

不幸的,当前的MasterPages控件属于演示版本,意思就是说几乎没有任何的设计时支持(design-time support)。你将不能托动任何控件到内容区域(Region or Content controls )你必须手动增加他们。并且在编辑页面将始终无法看到任何内容。

有什么问题和反馈可以发送给 davidebb@microsoft.com (不提供中文支持)

如果发现翻译有错误,欢迎指正,留言给笑容:http://www.oo8h.com/express.php

 

原文翻译自:http://www.cnblogs.com/dudu/articles/1503.aspx

修正参考自:http://www.cnblogs.com/dudu/articles/1314.aspx

另外的一个重要参考,将作为下次翻译目标:

MasterPages: Improved Version

http://authors.aspalliance.com/PaulWilson/Articles/?id=14