2011-03-05 3 views
1

:ASP.net obtenir contenu de la page pour changer la page principale contrôle page maître

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

page Contenu:

Master.MainMenu.TopTabSelected = "forum"; 

Je sais que je fais sans doute ce mal, mais est cela est-il possible? Je veux changer un paramètre de ce contrôle. Il dit 'inaccessible due to protection level'.

+0

[désolé, juste vu la propriété dans le balisage, ignorer précédente] Mais encore essayez 'var mainmenu = Master.FindControl (" MainMenu ") en tant que MainMenu; if (mainmenu! = null) mainmenu.TopTabSelected = "forum"; ' –

Répondre

2

Vous devez fournir une propriété publique f.e MenuTabSelected dans votre MasterPage qui obtient/définit cette propriété de votre menu.

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

Ensuite, vous pouvez y accéder de cette façon:

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

YourMasterPage est le type de votre MasterPage.

L'erreur du compilateur est renvoyée car vous souhaitez accéder à un contrôle privé ou protégé depuis l'extérieur de votre classe MasterPage. Ce ne serait autorisé que si ce serait public, ce is not recommended. Vous avez plus de contrôle si vous le faites de la façon dont je suggérais :)

0

éléments du menu Rechercher dans la page contenu et modifier sa valeur

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

} 
Questions connexes