在嵌套母版页中查找父级MasterPage属性

时间:2012-06-18 13:38:19

标签: c# asp.net master-pages

我继承了父母主页面的一些代码:content.master。此页面有两个属性,内容页面可以访问这两个属性来控制多视图服务器控件。

public enum ContentViews
{
    vw100 = 0,
    vw3070 = 1,
    vw7030 = 2
}

public ContentViews CurrentView
{
    get { return ((ContentViews)mvwDisplay.ActiveViewIndex); }
    set { mvwDisplay.ActiveViewIndex = (int)value; }
}

直接子内容页面(content_3070.aspx)可以访问这些属性并设置多视图的活动视图,如下所示:

protected void Page_PreInit(Object sender, System.EventArgs e)
{
    ((Content_Master)Page.Master).CurrentView = Content_Master.ContentViews.vw3070;
}

我也有content_100.aspx和content_7030.aspx,它们都是直接的孩子,可以做同样的事情。

那很好。但我想要做的是创建另一个母版页:search.master。 Seach.master将是一个嵌套的主人。

<%@ Master Language="C#" MasterPageFile="~/content.master" AutoEventWireup="true"CodeFile="search.master.cs" Inherits="Search_Master" %>

<%@ MasterType virtualpath="~/content.master" %>

从search.master,我想创建子内容页面(将是content.master的孙子)。从这些'孙子',我想访问content.master属性。但我似乎无法弄清楚如何在C#中执行此操作的语法。

感谢。

1 个答案:

答案 0 :(得分:1)

好的,想出这个。解决方案是向子母版页(search.master)添加属性,然后可以引用父母版页(content.master)上的属性。然后,第二个主服务器(search.master)的子内容页面可以访问其直接父主服务器的属性。

所以,第二个孩子的主人,seach.master看起来像这样:

public partial class Search_Master : System.Web.UI.MasterPage
{
    public enum ContentViews
    {
        vw100 = Content_Master.ContentViews.vw100,
        vw3070 = Content_Master.ContentViews.vw3070,
        vw7030 = Content_Master.ContentViews.vw7030
    }

    public ContentViews CurrentView
    {
        get 
        {
            MultiView mvwDisplay;
            mvwDisplay = (MultiView)Master.FindControl("mvwDisplay");
            return ((ContentViews)mvwDisplay.ActiveViewIndex); 
        }
        set 
        {
            MultiView mvwDisplay;
            mvwDisplay = (MultiView)Master.FindControl("mvwDisplay");
            mvwDisplay.ActiveViewIndex = (int)value; 
        }
    }
}

可以从search.master的内容子项中设置content.master上的多视图:

protected void Page_PreInit(Object sender, System.EventArgs e)
{
    ((Search_Master)Page.Master).CurrentView = Search_Master.ContentViews.vw100;
}