为什么asp:标题上的ContentPlaceHolder取代了整个标题?

时间:2009-06-23 00:28:39

标签: asp.net-mvc

在我的Site.Master上使用ASP.Net MVC我有:

<head runat="server">
    <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /> - MySite</title>
    <link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
</head>

然后在每个视图上我都有:

<asp:Content ID="Title" ContentPlaceHolderID="TitleContent" runat="server">
    Home
</asp:Content>

我期待的结果是:

 <title>Home - MySite</title>

但我得到了:

 <title>Home</title>

任何想法为什么?

5 个答案:

答案 0 :(得分:7)

使用此:

<title>
  <asp:ContentPlaceHolder ID="titleContent" runat="server" />
  <%= "- My Site" %>
</title>

原因是头部渲染的所有内容都被渲染为控件。

请参阅此question以获取更多链接以及其他解决方法。

答案 1 :(得分:1)

您可能在&lt;%@ Page%&gt;中有一个Title属性指令。

答案 2 :(得分:0)

有线我有同样的问题,我最终使用这种格式

   <title><%= Html.Encode(ViewData["Title"])  %> - mysite</title> 

以这种方式通过控制器控制标题

答案 3 :(得分:0)

您是否尝试从头标记中取出runat="server"位?我现在没有机器可以测试,但这对我来说有点奇怪。

答案 4 :(得分:0)

我在Site.Master文件中使用此标记:

<title>
    <asp:ContentPlaceHolder ID="TitleContent" runat="server" />
    <asp:Literal runat="server" Text=" - MySite" />
</title>

它看起来类似于boymc的suggestion