在contentplaceholder中添加标题会添加第二个空标题标记

时间:2008-12-16 09:16:55

标签: asp.net-mvc title

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

因为我希望我的页面标题代表当前页面的功能,并且因为我希望用用户的语言翻译标题,所以我在页面的head的contentplaceholder中添加了一个标题标签。除了现在出现第二个空的标题标签,当然无效之外,所有这些都很快乐。

任何想法如何解决这个问题?

6 个答案:

答案 0 :(得分:6)

根据W3C spec

  

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

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

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

  1. 使用@page指令标题设置此标记的内容
  2. 使用代码后面的Page.Title属性以编程方式设置值。
  3. 如果您使用的是ASP.Net MVC,则默认的Site.Master文件具有以下默认文本:

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

    默认控制器有:

    ViewData["Title"] = "Home";
    

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

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

答案 1 :(得分:4)

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

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

答案 2 :(得分:2)

答案 3 :(得分:0)

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

您无需通过内容占位符在代码中明确声明。

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

答案 4 :(得分:0)

清除masterpages标记

上的runat =“server”属性

答案 5 :(得分:0)

设置标题似乎是在标记声明中使用标题attritube:

<%@ 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"

希望这一点。