2009-01-20 6 views
6

Est-il possible d'accéder aux éléments de la page principale à partir de la page de contenu? Disons que j'ai MasterPage1 et ContentPage1 qui hérite de MasterPage1, et que MasterPage1 a un bouton: Button1. Puis-je modifier la propriété de ce bouton à partir de la page de contenu, par exemple pour rendre Button1 invisible, inactif, etc? Comment puis-je accomplir cela?ASP.NET - L'accès aux éléments de la page maîtresse constitue la page de contenu

J'utilise .net2.0

Répondre

9

Vous devez mettre une référence à la MasterPage dans votre page/utilisateur balisage de contrôle.

<%@ Reference VirtualPath="..." %> 

Puis dans le code-behind, vous venez de la fonte Page.MasterPage à votre MasterPage et accéder à ses propriétés.

MyMasterPage myMasterPage = (MyMasterPage)Page.Master; 
9

Oui ... si vous devez le faire à partir de la page ASPX en utilisant la MasterPage il serait:

Button myButton = (Button)Master.FindControl("myButton"); 
myButton.Visible = false; 
3

Oui, ils peuvent, et il y a quelques approches à cet égard.

L'approche que j'utilise est de créer des méthodes publiques dans la page maître qui fera la modification/l'accès aux données dans la page maître. Par exemple, j'aime généralement de modifier le style de lien de la page/catégorie actuelle je suis, donc j'avoir une méthode dans ma page maître comme ceci:

Public Sub SetNavigationPage(ByVal MenuName As String) 

     DirectCast(Me.FindControl(MenuName), HyperLink).CssClass = "MenuCurrent" 

    End Sub 

Puis dans ma page de contenu, j'accéder simplement ce méthode en tant que telle:

Dim myMaster As EAF = DirectCast(Me.Master, EAF) 
myMaster.SetNavigationPage("hypViewEmployee") 

... où EAF est le nom de la classe de ma page principale.

Un problème intéressant que j'ai trouvé est que j'ai eu des complications avec l'utilisation de la propriété Visibility des contrôles .NET lorsque vous essayez de les afficher/masquer de cette manière. Cela est dû à l'affichage des pages maîtres et de contenu. Pour résoudre ce problème, je configure un style CSS de base à la fois visible et caché et définissez la propriété CssClass en conséquence.

+0

+1. Merci pour les conseils avec le changement de la classe CssClass - je trouve ça très pratique aussi. Quelque part, j'ai oublié de laisser le commentaire sur le jour où la question a été posée – kristof

3

Master.FindControl (« myButton »). Visible = False

Veillez à ce que le contrôle que vous utilisez pour exécuter la commande ci-dessus, ne doit pas être à l'intérieur d'un panneau de mise à jour.

+0

alors comment pouvons-nous désactiver le contrôle à l'intérieur d'un panneau de mise à jour – ush

+0

alors comment pouvons-nous désactiver les contrôles dans un panneau de mise à jour – ush

Questions connexes