【问题标题】:Why asp:ContentPlaceHolder on the title replaces the whole title?为什么标题上的 asp:ContentPlaceHolder 会替换整个标题?
【发布时间】:2009-06-23 12:28:41
【问题描述】:

在我的 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>

有什么想法吗?

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    使用这个:

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

    原因是head中渲染的所有东西都是作为控件渲染的。

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

    【讨论】:

    • 谢谢你,这真的让我很烦
    【解决方案2】:

    您可能在 指令中有一个 Title 属性。

    【讨论】:

    • 我确实有一个标题,但删除它并没有帮助。我该怎么办?
    【解决方案3】:

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

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

    这样标题是通过控制器控制的

    【讨论】:

    • 可以说视图应该负责确定标题而不是控制器。
    • 我什至不会说“可以说”。标题肯定是视图逻辑,可能 95% 的情况下,动态标题是基于您的模型。
    【解决方案4】:

    您是否尝试过将 runat="server" 位从 head 标签中取出?我现在没有要测试的机器,但这对我来说有点奇怪。

    【讨论】:

      【解决方案5】:

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

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

      看起来和boymc的suggestion很像。

      【讨论】:

        猜你喜欢
        • 2018-04-14
        • 1970-01-01
        • 2020-12-23
        • 1970-01-01
        • 2014-09-09
        • 2012-01-15
        • 2011-06-25
        • 1970-01-01
        • 2014-11-02
        相关资源
        最近更新 更多