母版( MasterPage )

来源:互联网 发布:网络舆情的最新发展 编辑:程序博客网 时间:2024/05/21 16:57

 母版( MasterPage )
网站的布局通常是统一的,上面是 Logo 、菜单条、下面是公司地址、版权声明等。如果每个页面都重复做这些功能的话:重复性劳动、一旦修改那么每个页面都要修改。可以使用 FrameSet (框架集)技术来解决,但是 FrameSet 技术不灵活,而且很难进行 SEO ,所以只有部分内网系统还在用 FrameSet , .Net 中一般用母版(MasterPage )技术来解决这个问题。

MasterPage 是这样一种技术,把页面布局画好,在变化的内容部分 “ 留空 ” ,留空的部分由子页面填充内容,这样子页面只要填空就行,不用重复设计页面结构,一旦要修改页面结构修改母版页就可以,这样所有页面都会变化。母版页 “ 挖坑 ” ,内容页 “ 填坑 ” 。 母版页、具体页面中几乎可以使用所有的普通 WebForm 页
面能够使用的技术。

 

1:母版页的“坑”,在具体页面中可以填,也可以不填。不填则显示为母版页坑中预设好的默认东西,如果母版页我们没有给他预设好,那么,则不显示。如果在母版页的坑中设置了内容,然后在内容页也设置了内容 ,则显示内容页的东西而屏蔽母版页的东西。

2:母版页<head>部分的“坑”的说明:由于内容页中没有<html> <title>等标签,因此,JS,css没地方添加,但是由于有了母版页<head>部分的“坑”,则可以在内容页中添加JS  CSS代码了。从而在运行中,内容页中的JS   CSS可以自动填充到母版页的<head>中。

3:注意:在母版页中使用超链接、图片地址等的时候需要注意路径问题,在 母版页中的 runat=server 控件的链接地址、图片地址等会被解析为相对于母版页的地址 ,而客户端 HTML 控件 ASP.Net 引擎是直接输出的,因此是解析为相对于具体页面的地址。建议使用服务端控件,如果不能使用服务器控件,那么可以在 aspx 页面中调用 ResolveClientUrl   、 ResolveUrl进行虚拟路径的转换

4:每个具体页设置不同的标题,只要在具体页面的 @page 中设置 Title 属性:即可。可以在具体页中通过 Master.FindControl 来定位母版页中的控件然后对母版页中的控件进行操作,比如在一个具体页面中将母版页中的一个控件隐藏。