Domanda

Per gestire titolo della pagina nella pagina di, ho una pagina master dove sto prendendo ContentPlaceHolder.

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

e in ogni pagina scrivo

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

Ora il mio cliente mi chiede per il titolo di rimozione su tutte le pagine di e tenerlo sulla pagina master, ma non rimuove luogo contenuto del codice titolare sulla pagina tutti di pagina e master in modo che in futuro se qualsiasi esigenza allora possiamo inserire i dati in loro. Quindi il mio problema è senza rimuoverli a pagina master e pagine non sono in grado di mettere sul titolo maestro page.So come posso gestire questa situazione?

È stato utile?

Soluzione

Grazie ragazzi .. ho avuto soluzione

se si desidera impostare parte del titolo all'interno della pagina master. Ad esempio, si potrebbe desiderare il titolo di ogni pagina per terminare con un suffisso, “- MySite”.

Se si tenta questo (notare la - MySite appiccicato):

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

E eseguire la pagina, troverete che il - MySite non viene eseguito il rendering. Questo sembra essere un capriccio del controllo HtmlHead. Questo perché il tag del titolo all'interno del controllo HtmlHead ora è in sé un controllo.

La soluzione è piuttosto semplice. Aggiungi il tuo testo a un LiteralControl in questo modo.

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

Altri suggerimenti

Se si desidera una buona soluzione per l'override il titolo della pagina:

Creare una classe della propria che eredita dalla System.Web.Mvc.ViewPage.

avere le pagine di visualizzazione ereditano da quella classe:

Scrivi un gestore Page_Load nella nuova classe che fa qualcosa di simile:

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

È inoltre non è necessario un segnaposto contenuti di cambiare il titolo. Il tag è già un controllo server runat. Impostazione del Page.Title nel caricamento della pagina (o precedente evento) funzionano bene.

Si potrebbe anche mettere un tag script server runat nella tua pagina master per eseguire questa operazione anche.

Il modo più semplice:

Spostare il ContentPlaceHolder corrente da qualche parte per il codice HTML, e avvolgerlo in un <asp:PlaceHolder runat="server" visible="false"/>. Quando ti servirà in un secondo momento, basta spostare il ContentPlaceHolder di nuovo.

Utilizzare l'evento OnPreRender sulla pagina master per impostare il titolo, ignorando ciò che è stato impostato in ogni pagina.

perché non aggiungere attribuire Visible = false per ContentPlaceHolder della pagina master

Credo che questo sia il modo più semplice per gestire la situazione.

codifica Felice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top