Pregunta

Para administrar título de la página en la página de, tengo una página principal, donde estoy tomando ContentPlaceHolder.

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

y en todas las páginas que escribo

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

Ahora mi cliente me pregunta por el título de eliminación de todas las páginas y mantenerlo en la página principal, pero no elimina el contenido lugar código de soporte en la página principal todo de página, de modo que en el futuro si cualquier requisito entonces podemos insertar datos a ellos. Así que mi problema es sin retirarlos en la página principal y las páginas que no soy capaz de poner el título de maestro page.So cómo puedo manejar esta situación?

¿Fue útil?

Solución

Gracias chicos .. me dieron solución

Si desea establecer parte del título dentro de la página maestra. Por ejemplo, es posible que desee el título de cada página para terminar con el sufijo “- MySite”.

Si intenta esto (nótese el - MySite viraron):

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

Y ejecutar la página, encontrará que el - MySite no se representa. Esto parece ser una peculiaridad del control HtmlHead. Esto es porque la etiqueta del título dentro del control HtmlHead es ahora sí misma un control.

La solución es bastante simple. Añada su texto a un LiteralControl como tal.

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

Otros consejos

Si quieres una buena solución para anular el título de la página:

Crea una clase de su propio que hereda de la System.Web.Mvc.ViewPage.

Haga que sus páginas de vista heredan de la clase:

Escribir un controlador de Load en su nueva clase que hace algo como esto:

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

Es posible que no necesita un marcador de posición de contenido para cambiar el título. La etiqueta es ya un control de servidor runat. Ajuste de la Page.Title en la carga de la página (o evento anterior) funciona muy bien.

También puede poner una etiqueta de script runat servidor en su página maestra para realizar esta tarea también.

La manera más fácil:

Mueva el actual ContentPlaceHolder un lugar para su HTML, y envolverlo en una <asp:PlaceHolder runat="server" visible="false"/>. Cuando voy a necesitar más adelante, basta con mover el ContentPlaceHolder de nuevo.

Utilice el evento OnPreRender en la página maestra para establecer el título, anulando lo que se ha establecido en cada página.

por qué no añadir atribuir visible = false a ContentPlaceHolder de página maestra

Creo que esta es la manera más fácil de manejar su situación.

codificación feliz.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top