繁体   English   中英

从内容页面获取嵌套母版页面的元素

[英]Get element of nested master page from content page

我有一个母版页,一个嵌套母版页和一个内容页:Master(Site.master):

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head runat="server"> 
</head>
<body>
    <form runat="server">
    <asp:ScriptManager ID="ScriptManager" runat="server" />

     <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false"
                    IncludeStyleBlock="true" Orientation="Horizontal" RenderingMode="List">
                    <StaticSelectedStyle BackColor="LightBlue" BorderStyle="Solid" BorderColor="Black"
                        BorderWidth="1" />
                    <Items>
                        <asp:MenuItem NavigateUrl="~/xxx.aspx" Text="xxx" />
                        <asp:MenuItem NavigateUrl="~/xxx/xxx/xxx.aspx" Text="xxx" />

                    </Items>
                </asp:Menu>
     <div class="main">
        <asp:ContentPlaceHolder ID="cuerpo" runat="server" />
     </div>
    </form>
</body>
</html>

嵌套母版页(mOperator.master)

<%@ Master Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="mOperator.master.cs"
    Inherits="aplicacion_operadores_mOperador" %>

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="Server">
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="cuerpo" runat="Server">
    <div class="clear hideSkiplink" id="capaMenu">
        <asp:Menu ID="subMenuOperator" runat="server" CssClass="menu" EnableViewState="false"
            IncludeStyleBlock="true" Orientation="Vertical" RenderingMode="List">
            <StaticSelectedStyle BackColor="LightBlue" BorderStyle="Solid" BorderColor="Black"
                BorderWidth="1" />
            <Items>
                <asp:MenuItem NavigateUrl="~/yyyy.aspx" Text="yyy" />
                <asp:MenuItem NavigateUrl="~/yyy/yyy/yyyy.aspx" Text="yyyy" />

            </Items>
        </asp:Menu>
    </div>
    <asp:ContentPlaceHolder ID="masterRight" runat="server">
    </asp:ContentPlaceHolder>
</asp:Content>

内容页:

<%@ Page Title="" Language="C#" MasterPageFile="~/yyy/yyyy/mOperator.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="operators_Default" %>


<asp:Content ID="Content1" ContentPlaceHolderID="masterRight" Runat="Server">

</asp:Content>

现在,如果要从内容访问母版页菜单:

 Menu miPrincipal = (Menu)Master.Master.FindControl("NavigationMenu");
        miPrincipal.Items[1].Selected = true;

我成功获得了价值。 但...

如果要访问嵌套母版页菜单。 我正在这样尝试:

 Menu miSecundario = (Menu)Master.FindControl("subMenuOperator");
 miSecundario.Items[1].Selected = true;

但是给我空。

有任何想法吗?

试试这个

Menu mymenu = this.Page.Master.FindControl("cuerpo").FindControl("Content2").FindControl("subMenuOperator") as Menu;

我知道了:

 Menu mymenu = this.Page.Master.Master.FindControl("cuerpo").FindControl("subMenuOperator") as Menu;

您应该使用强类型母版页

在母版页mOperator中,显示菜单:

public Menu SubMenuOperator
{
    get
    {
        return this.subMenuOperator;
    }
}

将主类型添加到内容页面

<%@ MasterType VirtualPath="~/mOperator.master" %>

然后您可以使用进入菜单:

 Menu menu = this.Master.SubMenuOperator;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM