.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的模板前端控制技巧。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

使用 ASP.NET Web 窗体路由

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

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

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

.Net2005窗体调用demo

  • 2008-09-11 09:25
  • 76KB
  • 下载

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

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

在WinForms程序里实现窗体传值的最佳实践 - .NET技术 / C#

这个问题被问到相当多,很多网友都知道用属性,用委托。但是具体怎么做却不清楚。 我在网上看到很多文章,虽然提出的方案可行,但是实现的都不好,于是自己动手写了一个例子给大家。希望这个例子足够简单完整。...

Vb.net/VB 声明API函数实现父窗体功能

回顾第一次敲机房收费,自己调用了api函数实现了父窗体及其子窗体最小化的功能,如今再次遇到,自己就在思考,能不能继续使用API函数呢?答案当然是Of Course!

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

好吧,的确标题怪怪的诶。。。因为我不知道该

使用.Net编写Windows程序,对于窗体控制常见项目

使用.Net编写Windows程序,对于窗体控制常见项目
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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