下午仔细学习了嵌套母版页的使用方法,至于如何去实现母版页网上已经文章满天飞了,现在只是根据自己的理解说说在使用母版页的过程中的一些体会
1、使用母版页的难点
a) 子母版页不能由VS2005自动生成,主要靠手工来完成
b) 使用母版页嵌套的页面,无法切换到视图界面进行编辑
当然对于上面 b) 所述的问题,有网友已经给出了比较好的解决办法:把MasterPageFile那句话后面加上空格,变成MasterPageFile="~/Main.master " 详见 VS2005的关于母版页嵌套的一个小技巧
2、使用母版页的优势在哪里?
我们使用一项技术肯定有其可取之处,所以很自然的我们会问 使用母版页嵌套 到底对我们有什么好处呢。Essential asp.net 2.0 给了我们以下应用场景:
a) 配合MaterType 中的 TypeName属性,以强类型访问该通用基类。以下的示例是对此场景的说明:
1、通用母版基类namespace EssentialAspDotNet { public abstract class CommonMasterPage:MasterPage { public abstract bool ShowNavigationLinks{get;set;} } }
2、继承通用母版页的母版页 <%--File:SiteTemplate.master --%>
<%@ Master Language="C#" Inherits="EssentialAspDonNet.CommonMasterPage"%> <Script runat="server"> protected override bool ShowNavigationLinks { get{ return _navigationLinksPanel.visible;} set{ _navigationLinksPanel.visible=value;} } </Script> <!-- ... -->
3、在内容页以强类型方式访问通用的母版页基类 <%@ Page Language="C#" MasterPageFile="~/SiteTemplate.master" %> <%@ MasterType TypeName="EssentialAspDotNet.CommonMasterPage" %> <Script> protected void Page_load(object sender,EventArgs e) { Master.ShowNavigationLinks = false; } </Script> <!-- ... -->
b) 在需要创建多个可关联到网页的母版页,并在运行阶段更换母版页时,使用通用的母版页基类最有意义;要更换关联的母版页,可以使用属性MasterPageFile,他是Page类的一个公有属性,可以在代码中修改这个属性。
protected override void OnPreInit(EventArgs e) { this.MaterPageFile = "AlternateSiteTemplate.master"; base.OnPreInit(e); }