2010-06-24 20 views
2

J'ai deux pages maîtres dans mon projet, une pour les vues Web et une autre pour les e-mails. Dans la page Web maître est un espace réservé pour placer le JavaScript spécifique à la page, si une page l'utilise et que j'essaie de modifier par programme la page maître pour envoyer en tant qu'e-mail le serveur tombe car il ne peut pas trouver l'espace réservé.ContentPlaceHolder conditionnel dans la page maître

Existe-t-il un moyen de modifier le comportement de sorte que si un espace réservé ne peut pas être trouvé, il n'inclut pas ce bit? Je pense peut-être à la classe de base de ma page en boucle sur une collection d'espaces réservés et de balises de contenu et en supprimant ceux qui ne correspondent pas, mais je ne suis pas sûr qu'il y ait un bon point dans le cycle de vie de la page. J'utilise MVC et non WebForms si cela fait une différence.

Répondre

2

Ajoutez le ContentPlaceHolder dans la page maître du mail et définissez la propriété visible sur false et le contenu de la page pour cet espace réservé ne s'affichera pas.

<asp:ContentPlaceHolder id="javascriptPlaceHoldereHolder1" runat="server" Visible="false" /> 
0

Vous ne pouvez pas avoir un contrôle de contenu avec un ContentPlaceHolderID qui n'existe pas.

Au lieu de sortir ContentPlaceHolder, pourquoi ne fournissez-vous pas simplement un contrôle de contenu vide? Ça va juste ne rien rendre.

+0

Peut-être que je l'ai expliqué mal, je veux avoir un contrôle de contenu non vide qui rendra sur la page web master, mais pas sur la page principale du courrier – Chao

+0

Si vous réutilisez des pages sur plusieurs pages maîtres, toutes les pages maîtres devront avoir ContentPlaceHolders pour tous les contrôles de contenu possibles. Cependant, chaque masterpage est libre de définir la visibilité de tout élément ajouté à ses espaces réservés sur "false". Donc, dans votre page maître de messagerie, vous pouvez simplement faire un javascriptPlaceHolder.Controls [0] .Visible = false. – womp