2010-08-17 10 views
7

Ok, sono sicuro che deve essere un errore stupido da parte mia, ma non riesco a trovare il problema, e mi sta guidando noccioline.Curioso problema con ContentPlaceHolder nel tag HTML Title della pagina principale (MVC2)

Ho una pagina master, con questo:

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

E 'solo il codice HTML di default inserita da VS quando ho creato masterpage, ho solo aggiunto "- Company", alla fine, in modo che I don' Devo ripetere quel testo in ogni singola vista.

Sui punti di vista, ho, per esempio, questo:

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    Some title for the view 
</asp:Content> 

Come si può immaginare, il risultato finale non è quello che mi aspettavo. Invece di

<title>Some title for the View - Company</title> 

sto ottenendo:

<title>Some title for the View</title> 

Perché?

+1

"e mi sta facendo impazzire." sembra doloroso, spero che tu lo abbia risolto. –

+0

Lol! Di tutte le parole per digitare ... Corretto; D – salgiza

risposta

5

Sembra una stranezza su come funziona Classic ASP.Net (ovvero WebForms). Phil Haacked on Title Tags and Master Pages è un'ottima lettura.

Anche se approfondisce le ragioni per cui funziona così, sembra che non si riferisca specificamente a MVC. Il primo commento di Erik Porter ha la soluzione facile pazzo:

Change

<head runat="server"> 

a

<head> 

Tada, fisso.

+0

Woah! L'avevo persino copiato, ma non avevo mai prestato attenzione al fatto che esisteva un runat = "server" nel tag head. Molte grazie! :) – salgiza

0

Hai chiuso il tag del titolo due volte. Inoltre, prova a non fare in modo che ContentPlaceHolder si chiuda automaticamente.

In MVC, non ricordo di aver mai utilizzato ContentPlaceHolder. Scrivo fortemente la mia pagina principale e compilare la pagina master in questo modo.

+0

Corretto il tag del titolo (ho commesso l'errore durante la formattazione del codice per SO, in realtà è ok nel codice originale). Ho già provato a usare invece di auto-chiudersi, ma ottengo lo stesso risultato. – salgiza

3

Prova questo dentro il tag title:

<asp:ContentPlaceHolder ID="TitleContent" runat="server" /><%= " - Company" %> 

mi sono imbattuto in questo un po 'indietro e mettendo il letterale all'interno di un blocco di codice riesce up. Non sono proprio sicuro del perché, però, se qualcuno ha una spiegazione.

+0

Hehehe, sembra che il nuovo sistema di SO per mostrare le domande senza risposta sta funzionando (due risposte lo stesso giorno dopo pochi mesi senza commenti! :). Ho accettato la risposta di Erik, poiché il suo link spiega il motivo per cui il tuo codice funziona, e preferisco rimuovere il runat = server per la testa, dato che fondamentalmente non fa nulla (a parte farmi fare domande in SO ^^) – salgiza

Problemi correlati