ASP.net
在Global.asax中导入命名空间
<%@Global ...
<%@Import Namespace= "System.Data " %>
<%@Import Namespace= "System.Data.SqlClient " %>
...
MasterPage
MasterPage是一种模板,它可以让你快速的建立相同页面布局而内部不同的网页,如果一个网站有多个MasterPage,那么新建aspx文件的时候就可以选择需要实现页面布局的MasterPage,子页面以控件的形式存在于模板中。
contentplaceholder(内容占位符)的作用就是去“霸占”一个地方,而这个最终显示的,不是contentplaceholder,而是使用了master模板的Content。
内容页就是用于替换母版页中的ContentPlaceHolder的ASP.NET页面,.aspx扩展名。
使用:
1.在WebSite中添加一个名字叫MasterPage.master的MasterPage
2.创建一个aspx页面,注意创建的时候一定要勾上Select master page,则在该页面中便实现了对模板页面的引用.
母版页与用户控件(User Control)
类似,主要的不同点有:
(1)母版页的扩展名为.master,如Default.master。该扩展名和 System.Web.HttpForbiddenHandler 相关联,因此客户端浏览器不能直接访问到母版页。
(2)母版页由@Master指令标记,不含有@Page或@Control指令。@Master中包含的指令和@Control中包含的指令基本相同。
@Master指令
<%@ Master Language="C#" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>
(3)母版页可以包含若干个ContentPlaceHolder控件。这些占位符控件定义了内容页(Content Page)的位置,并被内容页覆盖。
母版页和内容页的组合及运行行为:
2.1 URL
前面已经说过,不能直接获取母版页,如:http://202.119.192.211/Example.master 这样的请求是不正确的。应该使用内容页的URL来请求某个页面。
2.2 合并
经过编译的母版页将被合并到内容页的控件树中,Content控件中的内容合并到相应的ContentPlaceHolder控件中。
母版页是内容页的一部分,就和用户控件的行为相同。他们的关系是这样的:内容页是母版页的容器,母版页又是一个的容器,包含了内容页中相应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 嵌套母版页
子母版页也包含文件扩展名 .master。子母版页通常会包含一些内容控件,这些控件将映射到父母版页上的内容占位符。就这方面而言,子母版页的布局方式与所有内容页类似。但是,子母版页还有自已的内容占位符,可用于显示其子页提供的内容。