【问题标题】:Removing whitespace from title (in head)从标题中删除空格(在头部)
【发布时间】:2016-01-05 16:05:58
【问题描述】:

我遇到了一个“奇怪”的问题。我的输出 html 标题元素创建换行符和空格。

<title>

    Title | Brand name

</title>

我使用 MVC 2 并获得以下代码来生成我的标题元素

Site.Master

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

页面 (aspx)

<asp:Content ContentPlaceHolderID="TitleContent" runat="server">
    <%= Html.SeoTitle(Model.MetaTitle.Trim(), Html.DefaultTitle())%>   
</asp:Content>

助手

public static string SeoTitle(this HtmlHelper helper, string title, string separator, bool siteNameLast, string fallbackTitle)
        {
            var siteName = SiteName(helper);

            title = !string.IsNullOrEmpty(title) ? title : fallbackTitle;

            if (string.IsNullOrEmpty(siteName))
                return title;

            title = title.TextToEntity();
            title = siteNameLast ? string.Format("{0} {1} {2}", title, separator, siteName) : string.Format("{0} {1} {2}", siteName, separator, title);

            return title;
         }

我找不到任何与我为什么得到这个结果有关的东西。有什么想法吗?

编辑
应用答案将减少一个换行符,使输出如下所示。我可以在同一行吗?

<title>
    title | brand name
</title>

【问题讨论】:

  • 它们在 HTML 中被视为尾随空格,浏览器不会呈现它们。你为什么要关心他们?

标签: c# html asp.net-mvc


【解决方案1】:

此代码导致换行和空格:

<asp:Content ContentPlaceHolderID="TitleContent" runat="server">
    <%= Html.SeoTitle(Model.MetaTitle.Trim(), Html.DefaultTitle())%>   
</asp:Content>

如果你去掉它们的开始和结束标签,你仍然以换行符开始和结束。

(removed tag, still whitespace hereafter)
    <%= Html.SeoTitle(Model.MetaTitle.Trim(), Html.DefaultTitle())%>   
(removed tag, still whitespace before)

所以解决方法是立即开始asp:Content标签的内部内容,不换行进行布局。

<asp:Content ContentPlaceHolderID="TitleContent" runat="server"><%= Html.SeoTitle(Model.MetaTitle.Trim(), Html.DefaultTitle())%></asp:Content>

据我所知,这不会影响标题的实际呈现方式。空白被从标题中删除。

【讨论】:

  • 它确实消除了一个换行问题,但请检查我编辑的问题。
  • 真的是在生成的源代码中,还是只是浏览器的控制台?由于空格被截断,这有什么关系吗?
  • 查看源代码和浏览器控制台,结果相同。我认为这对于 SEO 目的根本不重要,只是我们的 seo 人对此提出了观点。我也想知道我是否已经在处理这个问题:)
  • 对 SEO 来说没关系。谁说的?
  • 我不相信它会。对我来说,我知道这更多的是我想解决的问题,并了解它为什么会这样。 MVC不能在一行中做标题吗?
【解决方案2】:

删除此处的空格:

<asp:Content ContentPlaceHolderID="TitleContent" runat="server"><%= Html.SeoTitle(Model.MetaTitle.Trim(), Html.DefaultTitle())%></asp:Content>

【讨论】:

  • 这正是我 3 分钟前的回答。
  • ... 你应该猜到了,我的浏览器无法加载新的答案,我没有注意到 =\
猜你喜欢
  • 2022-11-25
  • 1970-01-01
  • 2011-10-18
  • 2018-01-19
  • 1970-01-01
  • 2019-12-10
  • 1970-01-01
  • 1970-01-01
  • 2011-04-08
相关资源
最近更新 更多