ASP.net获取内容页面以更改母版页控件

时间:2011-03-05 23:26:54

标签: c# asp.net master-pages

母版页

<form runat="server">
<Scirra:MainMenu runat="server" ID="MainMenu" TopTabSelected="home" SubTabSelected="link2" />
<asp:ContentPlaceHolder id="MainContent" runat="server">
snip

内容页面

Master.MainMenu.TopTabSelected = "forum";

我知道我可能做错了,但这可能吗?我想更改该控件的参数。它说'inaccessible due to protection level'

2 个答案:

答案 0 :(得分:2)

您应该在MasterPage中提供一个公共属性f.e MenuTabSelected,获取/设置菜单的此属性。

public string MenuTabSelected {
    get { return MainMenu.TopTabSelected; }
    set { MainMenu.TopTabSelected = value; }
}

然后你可以这样访问它:

((YourMasterPage)Master).MenuTabSelected = "forum";

其中YourMasterPage是您的MasterPage的类型。

抛出编译器错误,因为您要从MasterPage-Class外部访问私有或受保护的控件。只有在公开的情况下才允许这样做,is not recommended。如果按照我建议的方式进行操作,您可以获得更多控制权:)

答案 1 :(得分:0)

在内容页面中查找菜单项并更改其值

protected void Page_Load(object sender, EventArgs e)
{


Menu mainMenu = (Menu)Page.Master.FindControl("NavigationMenu");

MenuItem menuMaterials = mainMenu.FindItem("Materials");

    if (menuMaterials.Value == "Materials")
    {
         menuMaterials.Value = "NO materials";
        menuMaterials.Text = "No materials";
    }

}