.NET 2005 使用MasterPages实现Web窗体模板

原创 2006年06月14日 17:51:00
使用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的模板前端控制技巧。

.NET重构(四):窗体继承+模板方法,完美实现组合查询

导读:在机房重构中,有好些个查询都是大同小异,最为显著的就是组合查询了。怎样给自己省事儿,相同的东西能不能重复利用,就成了一个现实的问题。第一遍做机房的时候,使用的更多的是:复制+粘贴。学习了设计模式...

使用 ASP.NET Web 窗体路由

什么是路由?假设您有一个名为 RecipeDisplay.aspx 的 ASP.NET Web 窗体,此窗体位于一个名为 Web Forms 的文件夹中。使用此 Web 窗体查看方案时,传统方法是...

Vs2005 实现vb.net XPMenu 窗体菜单

  • 2012年12月22日 10:49
  • 21KB
  • 下载

ASP.NET 3.5第8章.Web窗体的数据控件

  • 2014年06月04日 15:18
  • 1012KB
  • 下载

结合JavaScript和ASP.NET Web窗体进行程式研发

ASP.NET为Web程式研发提供了新的范例。其中包括一系列基于服务器的控件,这些控件类似于HTML窗体中诸如文本框、按钮等元素。使用这些控件的问题是必须调用服务器。JavaScript为非常多任务提...

.NET vs2010中使用IrisSkin2.dll轻松实现winForm窗体换肤功能

IrisSkin2.dll是一款很不错的免费皮肤控件,利用它可以轻松的实现winForm窗体换肤! 网上很多朋友说在VS2010中不能使用IrisSkin2.dll,我这里提供一个取巧的办法。 ...
  • 3150379
  • 3150379
  • 2015年03月19日 14:19
  • 960

C#.NET vs2010中使用IrisSkin4.dll轻松实现WinForm窗体换肤功能

C#.NET vs2010中使用IrisSkin4.dll轻松实现WinForm窗体换肤功能   IrisSkin2.dll是一款很不错的免费皮肤控件,利用它可以轻松的实现Wi...

在Visual Studio 2005 Web Application Project中使用ASP.NET AJAX

====================================================== 注:本文源代码点此下载 =============================...

.Net2005窗体调用demo

  • 2008年09月11日 09:25
  • 76KB
  • 下载

vb.net简单实现透明窗体显示出背景透明的png

好吧,的确标题怪怪的诶。。。因为我不知道该
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.NET 2005 使用MasterPages实现Web窗体模板
举报原因:
原因补充:

(最多只允许输入30个字)