【问题标题】:ASP.net get content page to change master page controlASP.net 获取内容页以更改母版页控件
【发布时间】:2011-03-05 23:26:53
【问题描述】:

母版页:

<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'

【问题讨论】:

  • [抱歉,刚看到标记里的属性,忽略前面] 不过还是试试var mainmenu = Master.FindControl("MainMenu") as MainMenu; if(mainmenu!=null)mainmenu.TopTabSelected="forum";

标签: c# asp.net master-pages


【解决方案1】:

您应该在 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。如果您按照我建议的方式进行操作,您将拥有更多控制权:)

【讨论】:

    【解决方案2】:

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

    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";
        }
    
    }   
    

    【讨论】:

      猜你喜欢
      • 2017-08-02
      • 1970-01-01
      • 2014-02-23
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多