Question

Pour gérer le titre de la page à la page de, j'ai une page principale où je prends ContentPlaceHolder.

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

et sur chaque page j'écris

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">Some Title Here
</asp:Content>

Maintenant, mon client me demande pour le titre de supprimer sur de toutes les pages et le garder à la page principale, mais pas supprimer le code d'espace réservé contenu sur et la page principale de toutes les pages afin que dans l'avenir si aucune exigence alors nous pouvons insérer des données pour eux. Donc mon problème est sans les enlever à la page principale et pages je ne suis pas en mesure de mettre sur le titre maître page.So comment puis-je gérer cette situation?

Était-ce utile?

La solution

Merci les gars .. je suis arrivé solution

si vous souhaitez définir une partie du titre à partir de la page principale. Par exemple, vous voudrez peut-être le titre de chaque page pour se terminer par un suffixe « - MySite ».

Si vous essayez ceci (notez le - MySite clouée sur):

<%@ Master ... %>
<html>
<head runat="server">
  <title>
    <asp:ContentPlaceHolder ID="titleContent" runat="server" /> - MySite
  </title>
</head>

Et lancez la page, vous trouverez que la - MySite est pas rendu. Cela semble être une bizarrerie du contrôle HtmlHead. En effet, la balise de titre dans le contrôle HtmlHead est maintenant lui-même un contrôle.

Le correctif est assez simple. Ajoutez votre texte à un LiteralControl comme ainsi.

<%@ Master ... %>
<html>
<head runat="server">
  <title>
    <asp:ContentPlaceHolder ID="titleContent" runat="server" /> 
    <asp:Literalrunat="server" Text=" - MySite" />
  </title>
</head>

Autres conseils

Si vous voulez une bonne solution pour le titre de remplaçant la page:

Créer une classe de votre propre qui hérite de la System.Web.Mvc.ViewPage.

Demandez à vos pages d'affichage héritent de cette classe:

Ecrire un gestionnaire Page_Load dans votre nouvelle classe qui fait quelque chose comme ceci:

Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
   Me.Title = "Company Name | " + Page.Title
End Sub

Vous pouvez aussi ne pas besoin d'un support de contenu lieu de changer le titre. La balise est déjà un contrôle serveur runat. Réglage de la Page.Title de la charge de la page (ou d'un événement plus tôt) fonctionnent très bien.

Vous pouvez également mettre un script serveur runat dans votre page maître pour accomplir cette tâche aussi.

Meilleure façon:

Déplacer le ContentPlaceHolder courant quelque part à votre HTML, et l'envelopper dans un <asp:PlaceHolder runat="server" visible="false"/>. Lorsque vous en aurez besoin plus tard, il suffit de déplacer à nouveau la ContentPlaceHolder.

Utilisez l'événement OnPreRender sur la page principale pour définir le titre, ce qui a été prépondérant mis sur chaque page.

pourquoi ne pas ajouter l'attribut visible = false à ContentPlaceHolder de maître page

Je pense que cela est la meilleure façon de gérer votre situation.

codage heureux.

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