2010-08-17 4 views
7

Ok, ich bin mir sicher, dass es ein dummer Fehler von mir sein muss, aber ich kann nicht finden, wo das Problem liegt, und es treibt mich Nüsse.Neugieriges Problem mit dem ContentPlaceHolder im HTML-Titel-Tag der Masterseite (MVC2)

Ich habe eine Masterseite, mit dieser:

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

Es ist nur die Standard-HTML-VS eingefügt, wenn ich die Masterpage erstellt, ich habe gerade hinzugefügt „- Company“ am Ende, so dass ich don‘ Ich muss diesen Text in jeder einzelnen Ansicht wiederholen.

auf den Ansichten, ich habe zum Beispiel diese:

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

Wie Sie sich vorstellen können, ist das Endergebnis nicht das, was ich erwartet hatte. Statt

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

Ich erhalte:

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

Warum?

+1

"und es treibt meine Nüsse." klingt schmerzhaft, hoffe, du hast es geschafft. –

+0

Lol! Von allen Wörtern, die falsch geschrieben werden sollen ... Fixed; D – salgiza

Antwort

5

Scheint eine Eigenart zu sein, wie Classic ASP.Net (auch bekannt als WebForms) funktioniert. Phil Haacked on Title Tags and Master Pages ist eine tolle Lektüre.

Obwohl er sich eingehend mit den Gründen beschäftigt, warum es so funktioniert, scheint es, dass er sich nicht speziell auf MVC bezieht. Der erste Kommentar von Erik Porter hat die verrückte einfache Lösung:

ändern

<head runat="server"> 

zu

<head> 

Tada, fixiert.

+0

Woah! Ich hatte es sogar kopiert, aber ich hatte nie darauf geachtet, dass es im Kopf-Tag einen runat = "server" gab. Danke vielmals! :) – salgiza

0

Sie haben das Title-Tag zweimal geschlossen. Versuchen Sie auch nicht, dass der ContentPlaceHolder sich selbst schließt.

In MVC erinnere ich mich nicht, jemals den ContentPlaceHolder zu verwenden. Ich gebe meine Masterseite stark ein und bearbeite die Masterseite auf diese Weise.

+0

Das Title-Tag wurde korrigiert (ich habe den Fehler gemacht, als ich den Code für SO formatierte, es ist im Originalcode in Ordnung). Ich habe bereits versucht, anstatt selbst zu schließen, aber ich bekomme das gleiche Ergebnis. – salgiza

3

Versuchen Sie dies in Ihrem Titel-Tag:

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

ich in dieser Zeit lief zurück und setzen die wörtliche innerhalb eines Codeblocks klären auf. Ich bin mir nicht wirklich sicher warum, wenn jemand eine Erklärung hat.

+0

Hehehe, es scheint SO's neues System zu zeigen, unbeantwortete Fragen funktioniert (zwei Antworten am selben Tag nach ein paar Monaten ohne Kommentare! :). Ich habe Eriks Antwort akzeptiert, da sein Link den Grund erklärt, warum dein Code funktioniert, und ich würde lieber den runat = Server für den Kopf entfernen, da es im Grunde nichts tut (abgesehen davon, dass ich Fragen in SO stelle ^^) – salgiza

Verwandte Themen