Frage

Zum Seitentitel auf Seite zu verwalten, habe ich eine Master-Seite, wo ich Content nehme.

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

und auf jeder Seite i write

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

Nun frag meine Klienten mich entfernen Titel auf alle Seite und halten Sie sich auf Seite Master aber nicht Inhalt Platzhalter-Code entfernen auf aller Seite und Master-Seite, so dass in Zukunft, wenn eine Anforderung dann können wir Daten in sie einsetzen. Also mein Problem, ohne sie auf Master-Seite zu entfernen ist und Seiten, ich bin nicht in der Lage Titel auf Master page.So zu setzen, wie ich mit dieser Situation umgehen kann?

War es hilfreich?

Lösung

Danke Jungs .. Ich habe Lösung

Wenn Sie innerhalb der Master-Seite eingestellten Teil des Titels sollen. Zum Beispiel könnten Sie den Titel jeder Seite Ende mit einem Suffix wollen „- MySite“.

Wenn Sie versuchen, diese (man beachte die - MySite geheftet):

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

Und die Seite auszuführen, werden Sie feststellen, dass die - MySite nicht wiedergegeben wird. Dies scheint eine Marotte der Htmlhead Kontrolle. Dies ist, weil der Titel-Tag in der Htmlhead Steuerung ist jetzt selbst eine Kontrolle.

Die Lösung ist recht einfach. Fügen Sie Ihren Text ein LiteralControl wie so.

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

Andere Tipps

Wenn Sie eine gute Lösung wollen das Überschreiben des Seitentitels:

Erstellen Sie eine Klasse des eigenen dass erbt von der System.Web.Mvc.ViewPage.

Haben Sie Ihre Ansicht Seiten erben von dieser Klasse:

einen Page_Load-Handler in die neue Klasse schreiben, die so etwas wie dies funktioniert:

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

Sie brauchen auch keinen Inhalt Platzhalter um den Titel zu ändern. Der Tag ist bereits eine Runat Server Kontrolle. Einstellen des Page.Title in der Seite zu laden (oder früher Ereignisse) gut funktionieren.

Sie können auch einen Runat Server Skript-Tag in Ihrer Master-Seite setzen könnten diese Aufgabe auch zu erreichen.

Der einfachste Weg:

Verschieben Sie die aktuelle ContentPlaceHolder irgendwo auf Ihre HTML, und wickeln Sie es in einem <asp:PlaceHolder runat="server" visible="false"/>. Wenn Sie es später benötigen werden, sondern nur die Content bewegt wieder zurück.

Mit dem OnPreRender Ereignisse auf der Masterseite die Titel zu setzen, überschreibt, was auf jeder Seite gesetzt wurde.

wurde noch nicht Attribut Visible = false Content der Master-Seite

Ich denke, das ist der einfachste Weg, Ihre Situation zu behandeln.

Happy-Codierung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top