1

我继承了一些带有父母版页的代码: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# 中执行此操作的语法。

谢谢。

4

1 回答 1

1

好的,想通了这一点。解决方案是将属性添加到子母版页 (search.master),然后可以引用父母版页 (content.master) 上的属性。然后,第二个母版 (search.master) 的子内容页面可以访问其直接父母版的属性。

所以,第二个孩子 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; 
        }
    }
}

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

protected void Page_PreInit(Object sender, System.EventArgs e)
{
    ((Search_Master)Page.Master).CurrentView = Search_Master.ContentViews.vw100;
}
于 2012-06-18T15:36:29.417 回答