2010-08-17 20 views
7

好吧,我敢肯定這肯定是我的一個愚蠢的錯誤,但我找不到問題在哪裏,並且它在推動我堅果。在主頁(MVC2)的HTML標題標籤中的ContentPlaceHolder的好奇問題

我有一個母版頁,有這樣的:

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

這只是通過VS插入當我創造,我剛添加的母版默認的HTML「 - 公司」的結尾,讓我不不得不在每一個視圖中重複這些文本。

上的意見,我有,例如,這樣的:

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

正如你可以想像,最後的結果是不是我的預期。取而代之的

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

我越來越:

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

爲什麼?

+1

「這是在推動我的堅果。」聽起來很痛苦,希望你能解決它。 – 2010-08-17 12:08:13

+0

哈哈!在所有的單詞中輸入錯誤...修復; D – salgiza 2010-08-17 12:12:39

回答

5

似乎是古典ASP.Net(又名WebForms)如何工作的一個怪癖。 Phil Haacked on Title Tags and Master Pages是一個偉大的閱讀。

儘管他深入探討了它的工作原理,但他似乎並沒有專門提到MVC。埃裏克·波特第一個註解的瘋狂簡單的解決方案:

變化

<head runat="server"> 

<head> 

田田,固定。

+0

哇!我甚至複製了它,但是我從未關注頭標記中存在runat =「server」的事實。非常感謝! :) – salgiza 2010-11-22 10:25:00

0

您已關閉標題標記兩次。另外,儘量不要讓ContentPlaceHolder自動關閉。

在MVC中,我不記得曾經使用過ContentPlaceHolder。我強烈地鍵入我的母版頁並以這種方式填充母版頁。

+0

修復了標題標記(我在爲SO格式化代碼時犯了錯誤,它在原始代碼中確實沒問題)。我已經嘗試使用而不是自動關閉,但我得到了相同的結果。 – salgiza 2010-08-17 12:17:22

3

試試這個您的標題標籤中:

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

我就遇到了這個而回,並把文字代碼塊中清除它。但我不確定爲什麼,如果有人有解釋。

+0

嘿嘿,看起來SO的新系統顯示未解答的問題正在工作(兩個答案在幾個月後的同一天沒有評論!:)。我已經接受了Erik的回答,因爲他的鏈接解釋了你的代碼工作的原因,我寧願刪除runat =服務器的頭部,因爲它基本上什麼都不做(除了讓我在SO ^^中提問) – salgiza 2010-11-22 10:28:31