Question

Si j'ai une application Web ASP.NET MVC 2 avec les vues suivantes:

  1. Main.aspx
  2. Page1.aspx
  3. Page2.aspx

Et toutes les vues hériteront d'un MasterView appelé Site.master ,

Je veux être en mesure d'avoir une default Titre / H1 pour la page, qui peut être surchargée dans les vues dérivées.

Main.aspx aurait par exemple "MySite - xxx", Page1.aspx aurait "MySite - Page 1", Page2.aspx aurait. "MySite - Page2"

Et si je choisis pas ensemble le titre / H1 dans une nouvelle vue dérivée, le maître titre / H1 sera affiché.

Avec WebForms, j'accomplir cela de la manière suivante:

  1. le titre / les balises H1 sur le maître runat = "server"
  2. propriétés protégées Expose sur le maître code-behind
  3. Sur Page_Load des pages dérivées code-behind, définissez la propriété ( Master.Title = "Page 1" ).
  4. Sur Page_PreRender du maître code-behind, définir le titre / les balises H1 à "Mon site -" + Titre;

Comment pouvons-nous arriver avec ASP.NET MVC?

Je pourrais le faire dans le maître:

<title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title>

Et puis définissez dans la vue:

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    MySite - Page 1
</asp:Content>

Mais je voulais être en mesure de préciser que « Page 1 » dans la vue, et le titre obtient changé comme par magie à « MySite - Page 1 ». Sais ce que je veux dire? Le « MySite - ». Une partie des besoins de titre à le modèle pour le titre

Je suis probablement manque ici quelque chose d'évident. :)

Était-ce utile?

La solution

Avec une recherche rapide je trouve ceci:

http: // haacked. com / archive / 2009/04/03 / Tipjar-titre-tags-et-master-pages.aspx

explique pourquoi

<title>MySite<asp:content..../></title>

ne fonctionne pas

Autres conseils

Voici comment je le fais habituellement il:

<title>MySite - <%: Page.Title ?? "Default title" %></title>

dans votre MasterPage.

Ensuite, vous pouvez définir la propriété Title sur une page de contenu comme ceci:

<%@ Page Language="C#"
         MasterPageFile="~/Views/Shared/Site.Master"
         Inherits="System.Web.Mvc.ViewPage"
         Title="Page 1"
%>

Modifier

Eh bien, vous voudrez peut-être voir cette question SO: ASP.NET MVC -. Voir à la page principale, comment le titre ensemble

est beaucoup plus facile que vous le décrire.

Il suffit d'ajouter un espace réservé du contenu à votre page maître

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

Ensuite, dans votre contenu utilisation Page comme

<asp:Content ID="Content3" ContentPlaceHolderID="PageTitle" runat="server">
    My Page
</asp:Content>

De cette façon fonctionne, mais vous devez utiliser une balise HTML HEAD, pas un contrôle serveur. Donc, il suffit de retirer runat="server" de votre tête.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top