居士物语

博客园 首页 新随笔 联系 订阅 管理
  24 Posts :: 1 Stories :: 44 Comments :: 0 Trackbacks

公告

下午仔细学习了嵌套母版页的使用方法,至于如何去实现母版页网上已经文章满天飞了,现在只是根据自己的理解说说在使用母版页的过程中的一些体会

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);
}

posted on 2008-05-13 16:45 龙山居士 阅读(659) 评论(0) 编辑 收藏