.NET 2005 使用MasterPages实现Web窗体模板
2006-06-14 17:51
369 查看
使用MasterPages实现Web窗体模板
如果你是一个网页开发人员,面对大量含有重复内容的页面,你一定希望能利用“模板”定义网页内的公共部分,而每一个页面只需要完成其特有的内容,通过模板生成最终的页面。
熟悉Dreamweaver的网页开发人员都会喜欢其中的模板(Template)功能。但是当我们转换到了ASP.NET平台,却不得不使用一个基本上只能算是文本编辑器的微软开发环境(当然这应该是一个最完美的文本编辑器),微软在图形化网页设计方面也只能算是一个门外汉。尽管如此,即使没有所见即所得的图形化设计界面,微软以及其他开源志士们还是为我们提供了丰富的Web窗体前端控件。其中的MasterPages可以说是最有用的,因为它实现了Dreamweaver中的模板功能,而且在ASP.NET框架的支持下,使用模板变得更简便,我们甚至可以编程为自己的模板添加许多功能。
使用MasterPages实现Web窗体模板
定义模板控件
如果我们的窗体布局分为上中下三部分,而中间的部分是特定内容区域,那么最终的模板内容可以像下面这样:
<%@ Register TagPrefix="mp" namespace="Microsoft.Web.Samples.MasterPages" assembly="MasterPages" %>
<html>
<body>
<FORM runat="server">
<TABLE width="100%" border=1>
<TR><TD>页眉</TD></TR>
<TR><TD><mp:region id="regContent" runat="server">窗体内容</mp:region></TD></TR>
<TR><TD>页脚</TD></TR>
</TABLE>
</FORM>
</body>
</html>
1、每一个MasterPage的模板都是一个用户控件UserControl,在Visual Studio .NET环境中可以通过“项目->添加->Web用户控件”为项目新增一个UserControl。这个例子的用户控件我取名叫"Template.ascx",放在Web项目的根路径下。
2、在UserControl的HTML源代码的头部有这样一行:
这是为页面注册一个自定义的Tab标签,有了这个标签,才能使用MasterPages提供的各种控件。
3、为模板设计窗体的公共部分,这些内容和普通的HTML页面、ASP.NET Web窗体没有任何区别,如果你的网页使用了其他UserControl,而这些UserControl也是公共的,那么同样可以在这个模板内添加。总之,写一个模板控件与设计一个Web窗体没有什么区别,我们所要做的,仅仅是保留窗体内的公共内容,除去特定内容。
4、在Web窗体内特定内容的位置,使用控件标记代替。在以上这个例子中,regContent就是窗体特定内容的区域,每一个窗体将在这里填入自己的内容。
在窗体内使用模板
如果使用刚才给出的模板示例,窗体的HTML源代码如下:
<%@ language="c#" debug="true" trace="false" %>
<%@ Register TagPrefix="mp" namespace="Microsoft.Web.Samples.MasterPages" assembly="MasterPages" %>
<mp:contentcontainer runat="server" MasterPageFile="~/Template.ascx" id="Test">
<mp:content id="regContent" runat="server">窗体内容测试</mp:content>
</mp:contentcontainer>
1、和模板控件一样,使用MasterPages之前必须先注册其Tag(代码头部的第二行)。
2、在窗体内添加一个mp:contentcontainer的控件,上面的例子里它有三个属性:
runat="server"——这个是所有Web控件必须具备的属性;
MasterPageFile="~/Template.ascx"——告诉contentcontainer控件,此窗体使用的模板控件为Web根路径下的Template.ascx文件;
id="Test"——这个属性并不是必须的,但是如果没有或者在所有使用这个模板的窗体内此id有重复,在窗体的设计界面中我们将无法看见窗体的可视化结果,而仅仅显示一个contentcontainer控件标记。
3、在之间加入,也就是窗体自身的内容,它的id必须和模板中定义的region对应。在以上这个例子中,只有一个content——regContent——它对应了模板中id为regContent的region。
现在,模板和窗体都可以正常工作了。它们生成的结果就等同于这样一个窗体:
<%@ language="c#" debug="true" trace="false" %>
<html>
<body>
<FORM runat="server">
<TABLE width="100%" border=1>
<TR><TD>页眉</TD></TR>
<TR><TD>窗体内容测试</TD></TR>
<TR><TD>页脚</TD></TR>
</TABLE>
</FORM>
</body>
</html>
在“MasterPages实用技巧”的下一篇里,你可以了解基于MasterPages的模板前端控制技巧。
如果你是一个网页开发人员,面对大量含有重复内容的页面,你一定希望能利用“模板”定义网页内的公共部分,而每一个页面只需要完成其特有的内容,通过模板生成最终的页面。
熟悉Dreamweaver的网页开发人员都会喜欢其中的模板(Template)功能。但是当我们转换到了ASP.NET平台,却不得不使用一个基本上只能算是文本编辑器的微软开发环境(当然这应该是一个最完美的文本编辑器),微软在图形化网页设计方面也只能算是一个门外汉。尽管如此,即使没有所见即所得的图形化设计界面,微软以及其他开源志士们还是为我们提供了丰富的Web窗体前端控件。其中的MasterPages可以说是最有用的,因为它实现了Dreamweaver中的模板功能,而且在ASP.NET框架的支持下,使用模板变得更简便,我们甚至可以编程为自己的模板添加许多功能。
使用MasterPages实现Web窗体模板
定义模板控件
如果我们的窗体布局分为上中下三部分,而中间的部分是特定内容区域,那么最终的模板内容可以像下面这样:
<%@ Register TagPrefix="mp" namespace="Microsoft.Web.Samples.MasterPages" assembly="MasterPages" %>
<html>
<body>
<FORM runat="server">
<TABLE width="100%" border=1>
<TR><TD>页眉</TD></TR>
<TR><TD><mp:region id="regContent" runat="server">窗体内容</mp:region></TD></TR>
<TR><TD>页脚</TD></TR>
</TABLE>
</FORM>
</body>
</html>
1、每一个MasterPage的模板都是一个用户控件UserControl,在Visual Studio .NET环境中可以通过“项目->添加->Web用户控件”为项目新增一个UserControl。这个例子的用户控件我取名叫"Template.ascx",放在Web项目的根路径下。
2、在UserControl的HTML源代码的头部有这样一行:
这是为页面注册一个自定义的Tab标签,有了这个标签,才能使用MasterPages提供的各种控件。
3、为模板设计窗体的公共部分,这些内容和普通的HTML页面、ASP.NET Web窗体没有任何区别,如果你的网页使用了其他UserControl,而这些UserControl也是公共的,那么同样可以在这个模板内添加。总之,写一个模板控件与设计一个Web窗体没有什么区别,我们所要做的,仅仅是保留窗体内的公共内容,除去特定内容。
4、在Web窗体内特定内容的位置,使用控件标记代替。在以上这个例子中,regContent就是窗体特定内容的区域,每一个窗体将在这里填入自己的内容。
在窗体内使用模板
如果使用刚才给出的模板示例,窗体的HTML源代码如下:
<%@ language="c#" debug="true" trace="false" %>
<%@ Register TagPrefix="mp" namespace="Microsoft.Web.Samples.MasterPages" assembly="MasterPages" %>
<mp:contentcontainer runat="server" MasterPageFile="~/Template.ascx" id="Test">
<mp:content id="regContent" runat="server">窗体内容测试</mp:content>
</mp:contentcontainer>
1、和模板控件一样,使用MasterPages之前必须先注册其Tag(代码头部的第二行)。
2、在窗体内添加一个mp:contentcontainer的控件,上面的例子里它有三个属性:
runat="server"——这个是所有Web控件必须具备的属性;
MasterPageFile="~/Template.ascx"——告诉contentcontainer控件,此窗体使用的模板控件为Web根路径下的Template.ascx文件;
id="Test"——这个属性并不是必须的,但是如果没有或者在所有使用这个模板的窗体内此id有重复,在窗体的设计界面中我们将无法看见窗体的可视化结果,而仅仅显示一个contentcontainer控件标记。
3、在之间加入,也就是窗体自身的内容,它的id必须和模板中定义的region对应。在以上这个例子中,只有一个content——regContent——它对应了模板中id为regContent的region。
现在,模板和窗体都可以正常工作了。它们生成的结果就等同于这样一个窗体:
<%@ language="c#" debug="true" trace="false" %>
<html>
<body>
<FORM runat="server">
<TABLE width="100%" border=1>
<TR><TD>页眉</TD></TR>
<TR><TD>窗体内容测试</TD></TR>
<TR><TD>页脚</TD></TR>
</TABLE>
</FORM>
</body>
</html>
在“MasterPages实用技巧”的下一篇里,你可以了解基于MasterPages的模板前端控制技巧。
相关文章推荐
- .NET 2005 使用MasterPages实现Web窗体模板
- 【MasterPages实用技巧】使用MasterPages实现Web窗体模板
- cnforum使用MasterPages实现Web窗体模板
- 【MasterPages实用技巧】使用MasterPages实现Web窗体模板
- .Net 2005 中通过MasterPage来更方便实现网站模板替换
- 使用WCF实现SOA面向服务编程“.NET研究”—— 架构设计
- C++ 使用模板实现冒泡排序
- Flex与.NET互操作(五):使用FileReference+HttpHandler实现文件上传/下载
- C#中使用JSON.NET实现JSON、XML相互转换
- Bravo.Reporting:使用 .Net 实现基于 ODF 文档格式的报表系统
- SQL2005 使用证书实现数据库镜像
- 使用.NET实现远程线程插入
- 在 Oracle 数据库上使用 Visual Studio 2005 或 2008 构建 .NET 应用程序(官方文章转载)
- .NET使用js制作百度搜索下拉提示效果(不是局部刷新)实现思路
- 使用VS2010的Database项目模板统一管理数“.NET研究”据库对象
- 使用javascript原生实现一个模板引擎
- 使用GridView的模板列实现在线编辑的功能
- 在.NET中使用反射实现简易插件机制
- 用.net实现注册用户使用RadioButtonList,DropDownList与数据库绑定,使用DropDownList实现省市联动
- 使用gettext让.net实现多语种(1)- 基本环境搭建