【问题标题】:Adding title in contentplaceholder adds second empty title tag在 contentplaceholder 中添加标题会添加第二个空标题标签
【发布时间】:2010-09-27 02:43:21
【问题描述】:

我的母版页在 head 标记中有一个 contentplaceholder。

因为我希望我的页面标题代表当前页面的功能,并且因为我希望将标题翻译成用户的语言,所以我在页面头部的内容占位符中添加了一个标题标签。一切都很好,只是现在出现了第二个空标题标签,该标签是无效的。

有什么办法解决这个问题吗?

【问题讨论】:

    标签: asp.net-mvc title


    【解决方案1】:

    似乎设置标题的最佳方法是在此处的标记声明中使用标题属性:

    <%@ Page Title="PAGE NAME HERE" Language="C#" MasterPageFile="~/Controls/MasterPage/MasterPage.master"
    AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" %>
    

    或者只需在 page_load 中设置它

    Page.Title = "Your page title"
    

    有点希望。

    【讨论】:

    • 如果我没记错的话,这是 asp.net 的经典方式。请注意 asp.net-mvc 标签。
    • 我会羞愧地低下头...哎呀! Web 表单不是经典的 ;) 大声笑
    【解决方案2】:

    清除 masterpages 标记上的 runat="server" 属性

    【讨论】:

      【解决方案3】:
      【解决方案4】:

      我遇到了同样的问题,found a solution 似乎有效。这很hacky,但同时也很简单。只需在头部添加另一个标题标签,在其中添加一个 runat="server" 属性,然后将其可见性设置为 false:

      <title visible="false" runat="server"><%-- hack to turn the auto title off --%></title>
      

      【讨论】:

      • 此解决方案使页面完全没有标题,目前正在尝试自己解决此问题
      • 我通过另一种方式添加另一个 标签来解决这个问题。事实上,我需要这样做的原因是因为我们的 .NET1 代码有一种为每个页面生成标题标签的方法,而 .NET2 标题是重复的。
      • 为我工作,并且是在我们现有的代码库之一中解决问题的最简单方法。谢谢!
      【解决方案5】:

      根据W3C spec

      每个 HTML 文档的 HEAD 部分都必须有一个 TITLE 元素。

      因此,ASP.Net 平台符合标准并为您的页面添加一个空标题标签以帮助您实现有效的标记 - 它不知道您将通过内容占位符添加一个。

      在经典的 ASP.Net 下,您的选择是:

      1. 使用@page指令Title来设置这个标签的内容
      2. 使用后面代码中的 Page.Title 属性以编程方式设置值。

      如果您使用的是 ASP.Net MVC,默认的 Site.Master 文件具有以下默认文本:

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

      默认控制器有:

      ViewData["Title"] = "Home";
      

      在操作结果中,再次允许以编程方式访问页面标题。

      通常我使用 HeadContent 内容占位符来添加特定于页面的静态脚本和 css 链接。

      【讨论】:

      • 页面特定的脚本和 css 导入确实在那里。但我想我也可以添加标题。似乎没有。那我得让我的控制器来做。
      【解决方案6】:

      @Page 指令中有一个名为 Title 的属性,用于设置页面的标题。它也可以作为 Page 控件上的属性访问。

      您不需要通过内容占位符在标签内显式声明 a。

      至少它适用于使用 MasterPages 的基本 ASP.NET 页面。对于 ASP.NET MVC 不太确定。

      【讨论】:

      • 我的标题需要翻译,因此需要包含所有翻译字符串的视图数据。标题属性无法访问:(
      • 尝试将您的 ContentPlaceholder 放在标题标签内。虽然我不明白为什么你不能在控制器中完成翻译,并将正确的翻译传递给 ViewData。有关这方面的帮助,请参阅 stackoverflow.com/questions/192465/…
      • 不,这不是问题所在。我的翻译一切正常。但我必须在标题标签中插入翻译后的数据。这不能在 @Page 指令中完成。此外,我确实可以添加一个专门用于标题的内容占位符。但这只能解决问题,而不是原因。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-30
      • 1970-01-01
      • 1970-01-01
      • 2020-01-21
      相关资源
      最近更新 更多