2009-06-23 8 views
3

En utilisant ASP.Net MVC sur mon Site.master je:Pourquoi asp: ContentPlaceHolder sur le titre remplace le titre entier?

<head runat="server"> 
    <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /> - MySite</title> 
    <link href="../../Content/Site.css" rel="stylesheet" type="text/css" /> 
</head> 

puis sur chaque point de vue, j'ai quelque chose comme:

<asp:Content ID="Title" ContentPlaceHolderID="TitleContent" runat="server"> 
    Home 
</asp:Content> 

et je me attendais, à la suite:

<title>Home - MySite</title> 

mais j'ai:

<title>Home</title> 

Des idées pourquoi?

Répondre

7

Utilisez ceci:

<title> 
    <asp:ContentPlaceHolder ID="titleContent" runat="server" /> 
    <%= "- My Site" %> 
</title> 

La raison c'est que tout ce qui est rendu dans la tête est rendu comme un contrôle.

Voir ce question pour d'autres liens, et d'autres moyens de le résoudre.

+0

Merci, ça m'ennuyait vraiment – wheelibin

1

Vous pouvez avoir un attribut Titre dans la directive <% @ Page%>.

+0

J'avais un titre ici, mais le supprimer n'a pas aidé. Que devrais-je faire avec? – Pablo

0

j'avais câblé la même question et je finis à l'aide de ce format

<title><%= Html.Encode(ViewData["Title"]) %> - mysite</title> 

de cette manière le titre est contrôlé par le contrôleur

+1

On peut soutenir que la vue devrait être responsable de la détermination du titre et non du contrôleur. –

+0

Je ne dirais même pas "sans doute". Les titres sont très certainement la logique de vue, et probablement 95% du temps, un titre dynamique est basé sur votre modèle. –

0

Avez-vous essayé de retirer le bit runat="server" de l'étiquette de tête? Je n'ai pas de machine à tester en ce moment, mais cela me semble un peu étrange.

0

J'utilise cette balise dans le fichier Site.master:

<title> 
    <asp:ContentPlaceHolder ID="TitleContent" runat="server" /> 
    <asp:Literal runat="server" Text=" - MySite" /> 
</title> 

Il ressemble à boymc de suggestion.

Questions connexes