Pergunta

Para gerenciar título da página na da página, eu tenho uma página principal, onde eu estou tomando ContentPlaceHolder.

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

e em cada write página i

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

Agora, meu cliente me pedir título de remoção em todas as páginas de e mantê-lo na página mestre, mas não remover o código espaço reservado de conteúdo em todas as páginas mestre de página e para que no futuro se houver exigência, então podemos inserir dados a eles. Portanto, meu problema é sem removê-los na página principal e páginas eu não sou capaz de colocar título no mestre page.So como posso lidar com esta situação?

Foi útil?

Solução

Obrigado pessoal .. Eu tenho solução

Se você quiser peça do jogo do título de dentro da página mestre. Por exemplo, você pode querer o título de cada página ao fim com um sufixo “- MySite”.

Se você tentar isso (note o - MeuSite anexados):

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

E executar a página, você verá que o - MeuSite não é processado. Esta parece ser uma peculiaridade do controle HtmlHead. Isso ocorre porque o título de tag dentro do controle HtmlHead agora é em si um controle.

A correção é muito simples. Adicione seu texto a um LiteralControl assim.

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

Outras dicas

Se você quer uma boa solução para substituir o título da página:

Criar uma classe de seu próprio que herda da System.Web.Mvc.ViewPage.

Tenha suas páginas vista herdam essa classe:

Escrever um manipulador Page_Load em sua nova classe que faz algo parecido com isto:

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

Você também não precisa de um espaço reservado de conteúdo para alterar o título. A tag já é um controle de servidor runat. Definir o Page.Title no carregamento da página (ou evento anterior) funcionam muito bem.

Você também pode colocar uma tag de script servidor runat em sua página mestra para realizar essa tarefa também.

A maneira mais fácil:

Mover a algum lugar ContentPlaceHolder atual para o seu HTML, e envolvê-la em um <asp:PlaceHolder runat="server" visible="false"/>. Quando você vai precisar dele mais tarde, basta mover o ContentPlaceHolder de volta.

Use o evento OnPreRender na página mestra para definir o título, substituindo o que foi definido em cada página.

porque não adicionar atributo Visible = false para ContentPlaceHolder da página mestra

Eu acho que esta é a maneira mais fácil de lidar com sua situação.

Happy codificação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top