电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 在线教程-> .NET
Master Page 初探-.NET教程,评论及其它
作者:网友供稿 点击:418
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
master page (母版页)是vs.net2005中的新特性,提供了页面模板的功能。该模板是动态的,可以由内容页面自主选择。
1 master page的组成
master page主要由两部分组成:master page(母版页)本身和一个或多个content page(内容页)。
1.1母版页(master page)
母版页与用户控件(user control)类似,主要的不同点有:
(1)母版页的扩展名为.master,如default.master。该扩展名和system.web.httpforbiddenhandler 相关联,因此客户端浏览器不能直接访问到母版页。
(2)母版页由@master指令标记,不含有@page或@control指令。@master中包含的指令和@control中包含的指令基本相同。
[代码示例1]@master指令
<%@ master language="c#" codefile="masterpage.master.cs" inherits="masterpage" %>
(3)母版页可以包含若干个contentplaceholder控件。这些占位符控件定义了内容页(content page)的位置,并被内容页覆盖。
通过vs.net向导可以直接建立一个母版页,和建立用户控件类似。并且可以在母版页上添加你所需要的其他控件,如sitemappath等等。
[代码示例2]一个简单母版页(example.master)
<%@ master language="c#" autoeventwireup="true" codefile="example.master.cs" inherits="example" %>
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>母版页标题</title>
</head>
<body>
    <form id="form1" runat="server">
        <table width=”100%”>
            <tr>
                <td>
                    <asp:contentplaceholder id="headerholder" runat="server">
                    </asp:contentplaceholder>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:contentplaceholder id="mainholder" runat="server">
                    </asp:contentplaceholder>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:contentplaceholder id="footerholder" runat="server">
                    </asp:contentplaceholder>
                </td>
            </tr> 
        </table>
    </form>
</body>
</html>
从上面的示例中可以看到,母版页中含有<html>,<head>,<body> 和 <form> 这些顶级html元素,而内容页中是没有的。
example.master母版页在visual studio 设计器中如下所示:
图1 example.master 在vs.net 设计器中的样式
图1 example.master 在vs.net 设计器中的样式
需要注意的是,母版页和内容页的关系不是继承关系,虽然和继承的特点很相近。masterpage类的基类是usercontrol。masterpage类的声明为:public class masterpage : usercontrol 。
最后需要注意的是,母版页不支持主题(theme)。
1.2内容页(content page)
内容页就是用于替换母版页中的contentplaceholder的asp.net页面,.aspx扩展名。在vs.net新键页面向导中选择webform,并选择“select master page”,然后选择该内容页相应的母版页即可。
内容页通过@page指令masterpagefile,指定需要使用的母版页。如下所示:
<%@ page language="c#" masterpagefile="~/example.master" autoeventwireup="true" codefile="a.aspx.cs" inherits="a" title="内容页a标题" %>
在内容页中添加content控件,并将其映射到母版页上的contentplaceholder。然后向content控件中添加你所需要的文本或其他控件。
[代码示例3]
<%@ page language="c#" masterpagefile="~/example.master" autoeventwireup="true" codefile="a.aspx.cs" inherits="a" title="内容页a标题" %>
<asp:content id="headercontent" contentplaceholderid="headerholder" runat="server">
    head style 1.
</asp:content>
<asp:content id="maincontent" contentplaceholderid="mainholder" runat="server">
    <p>
        使用 asp.net 母版页可以为应用程序中的页创建一致的布局。单个母版页可以为应用程序中的所有页(或一组页)定义所需的外观和标准行为。然后可以创建包含要显示的内容的各个内容页。当用户请求内容页时,这些内容页与母版页合并以将母版页的布局与内容页的内容组合在一起输出。
    </p>
</asp:content>
<asp:content id="footercontent" contentplaceholderid="footerholder" runat="server">
    powered by <a href="http://zhangleixp.itpub.net/" title="访问作者主页:zhangleixp.itpub.net">zhangleixp</a>
</asp:content>
2 母版页和内容页的组合及运行行为
2.1 url
前面已经说过,不能直接获取母版页,如:http://202.119.192.211/example.master 这样的请求是不正确的。应该使用内容页的url来请求某个页面。
2.2 合并
经过编译的母版页将被合并到内容页的控件树中,content控件中的内容合并到相应的contentplaceholder控件中。如图:
图2 内容页和母版页的组合结果页
图2 内容页和母版页的组合结果页_控件树
图2 内容页和母版页的组合结果
可以看到,母版页是内容页的一部分,就和用户控件的行为相同。他们的关系是这样的:内容页是母版页的容器,母版页又是一个的容器,包含了内容页中相应content中的控件。
2.3 初始化次序
(1)母版页-init
(2)内容页-init
(3)内容页-load
(4)母版页-load
(5)内容页-prerender
(6)母版页-prerender
2.4 页面执行环境及url转换
母版页和内容页合并后,页面的执行环境为内容页的环境,这样会不会导致母版页中资源引用或相对url出现错误呢?对于服务器控件,asp.net可以自动解决这个问题,比如母版页上的一个image控件,其imageurl为相对url:“images/banner.gif”,当母版页和内容页组合时,asp.net将其转换为合适的url。对于非服务器控件或标记,如<img>,asp.net将不做任何转换,因此,在母版页中,应该尽量使用服务器控件。
3 动态引用母版页
内容页中可以动态地引用母版页,通常在preinit中设置需要使用的母版页。如下:
protected void page_preinit(object sender, eventargs e)
{
    this.masterpagefile = "~/example.master";
}
4 获取母版页上的控件
运行时,母版页和内容页合并了,因此可以访问母版页上的控件。可以使用findcontrol方法来定位母版页上的控件。如果要访问contentplaceholder中的控件,需要先获取contentplaceholder控件的引用,然后再调用其findcontrol方法。也就是说需要两次调用findcontrol方法。
另外一种方法是在母版页中公开属性来进行访问。
5 嵌套母版页
懒得写了,需要的自己找资料吧。:)

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·经典收藏之 - C++内存管理详解-.NET教程,C#语言
·Master Page 初探-.NET教程,评论及其它
·GDI+编程10个基本技巧-.NET教程,评论及其它
·VB.NET中让Textbox只能输入数字(二)-.NET教程,VB.Net语言
·stl应用小问题-.NET教程,评论及其它
·WIN32中颜色值(COLORREF)与.NET中颜色值(Color)的转换-ASP教程,系统相关
·打造自己的专业图像工具-Visual C++ 2005图像编程系列【三】-.NET教程,C#语言
·.Net中常见问题及解决方法归类-.NET教程,.NET Framework
·Lex和Yacc从入门到精通(3)--一个极其简单的lex和yacc程序-.NET教程,评论及其它
·VB下几个非常有用的函数-.NET教程,VB.Net语言

最新文章
·VC#初学入门:第一个Windows程序
·ASP.NET 2.0-选用DataSet或DataReader
·用.net 处理xmlHttp发送异步请求
·asp.net创建文件夹的IO类的问题
·asp.net 2.0 中加密web.config 文件中的配置节
·关于ASP.NET调用JavaScript的实现
·如何实现ASP.NET网站个性化
·Acegi安全系统的配置-.NET教程,评论及其它
·Spring安全系统:Acegi Security Acegi简介-.NET教程,评论及其它
·Biztalk 开发之 架构和实例的验证-.NET教程,评论及其它


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号