1

親マスターページcontent.masterでいくつかのコードを継承しました。このページには、マルチビューサーバーコントロールを制御するためにコンテンツページからアクセスできる2つのプロパティがあります。

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)のプロパティを参照できるようにすることです。次に、2番目のマスター(search.master)の子コンテンツページは、直接の親マスターのプロパティにアクセスできます。

したがって、2番目の子マスターである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 に答える