Comment faire pour déterminer qui de l'Enfant Page est affichée à partir de la Page Maître?
Je suis en train d'écrire le code sur la page principale, et j'ai besoin de savoir qui de l'enfant (contenu) page est affichée. Comment puis-je le faire par programmation?
Vous devez vous connecter pour publier un commentaire.
Cela sonne comme une mauvaise idée de commencer avec. L'idée du maître, c'est qu'il ne devrait pas attention à ce que la page est-il que c'est tout le code commun pour chaque page.
J'utilise ceci:
Il retuns le nom de la classe dans ce format "ASP.default_aspx", mais je trouve que facile à analyser pour la plupart des besoins.
Espère que ça aide!
string pageName = this.ContentPlaceHolder1.Page.GetType().BaseType.Name;
Ceci renvoie à la classe de base type de page enfant. Pour la plupart des cas, il donne de la Page Adresse sans "aspx" tag. Par exemple "par Défaut".Il est préférable de laisser le
ContentPage
aviser leMasterPage
. C'est pourquoi laContentPage
a unMaster
Propriété etMasterPage
n'a pasChild
de la propriété.La meilleure pratique consiste à définir une propriété ou une méthode sur la
MasterPage
et utiliser ce par le biais de laMaster
propriété de laContentPage
.Si vous utilisez cette technique, il est préférable de spécifier explicitement le nom de classe pour la MasterPage. Cela rend l'utilisation de la MasterPage dans le ContentPage.
Exemple:
Espère que cette aide.
J'ai eu une raison de vérifier l'enfant page dans la page maître.
J'ai tous mes options de menu sur ma page principale et ils doivent être désactivés si certains paramètres du système ne sont pas définis.
Si elles ne sont pas alors un message est affiché et les boutons sont désactivés. Comme les paramètres de la page est une page de contenu à partir de cette page principale, je ne veux pas le message de continuer à être affiché sur toutes les pages de paramètres.
ce code a fonctionné pour moi:
Utiliser le code ci-Dessous.
Vous pouvez utiliser:
Demande.CurrentExecutionFilePath
Voici ma solution pour le problème (ce code est inclus dans le code-behind de la page principale):
ou un peu plus sophistiqué, mais moins lisible:
ou
- Je faire quelque chose de semblable à cela dans un projet de mine à joindre dynamiquement des fichiers css en fonction de la page en cours de chargement. Je viens d'obtenir le nom du fichier à compter de la demande:
Puis extraire le nom du fichier à partir de là. Je ne suis pas sûr si cela va fonctionner si vous faites de l'URL ré-écrit bien.
Ce faire, vous pouvez obtenir la dernière segmant ou la demande, et je vais être le nom du Formulaire
Vous pouvez essayer celui-ci:
<%: this.ContentPlaceHolder1.Page.GetType().Name.Split('_')[0].ToUpper() %>
Placer ce code dans le
title
balises de laSite.Master
nombreuses réponses, je suis en utilisant
cela rend plus facile pour exclure toute seule page et depuis votre comparaison d'une chaîne vous pouvez même préfixe pages comme exclude_pagetitle et la comparaison d'une sous-chaîne de caractères du titre. J'utilise c'est souvent à exclure du journal dans les pages de certaines fonctionnalités que je ne veux pas charger comme délais d'expiration de session et chat en direct.
Ci-dessous le code a fonctionné comme un charmé ..l'essayer
chaîne PName = Request.UrlReferrer.Les Segments[Demande.UrlReferrer.Les Segments.Longueur - 1];
Page.Demande.Url.PathAndQuery ou l'un des autres propriétés de l'Url de l'objet devrait être disponible pour vous à partir de la page de code.
Vous pouvez vérifier le type de page dans le code-behind:
MyPage1
, vous n'êtes en fait pas. Vous obtenez quelque chose commeASP.MyPage1_aspx
, et vous ne pouvez pas se référer à ce type au moment de la compilation.