我的母版页在 head 标记中有一个 contentplaceholder。
因为我希望我的页面标题代表当前页面的功能,并且因为我希望将标题翻译成用户的语言,所以我在页面头部的 contentplaceholder 中添加了一个标题标签。除了现在出现了第二个空的标题标签之外,所有的一切都很好。
任何想法如何解决这个问题?
我的母版页在 head 标记中有一个 contentplaceholder。
因为我希望我的页面标题代表当前页面的功能,并且因为我希望将标题翻译成用户的语言,所以我在页面头部的 contentplaceholder 中添加了一个标题标签。除了现在出现了第二个空的标题标签之外,所有的一切都很好。
任何想法如何解决这个问题?
根据W3C 规范:
每个 HTML 文档的 HEAD 部分都必须有一个 TITLE 元素。
因此,ASP.Net 平台符合标准并为您的页面添加一个空的标题标签以帮助您实现有效的标记 - 它不知道您将通过内容占位符添加一个。
在经典的 ASP.Net 下,您的选择是:
如果您使用的是 ASP.Net MVC,则默认 Site.Master 文件具有以下默认文本:
<title><%= Html.Encode(ViewData["Title"]) %></title>
默认控制器具有:
ViewData["Title"] = "Home";
在操作结果中,再次允许以编程方式访问页面标题。
通常我使用 HeadContent 内容占位符来添加特定于页面的静态脚本和 css 链接。
我遇到了同样的问题,并找到了一个似乎可行的解决方案。这很hacky,但同时也很简单。只需在头部添加另一个标题标签,在其中放置一个 runat="server" 属性,然后将其可见性设置为 false:
<title visible="false" runat="server"><%-- hack to turn the auto title off --%></title>
@Page 指令中有一个名为 Title 的属性,用于设置页面的标题。它也可以作为 Page 控件上的属性访问。
您不需要通过内容占位符在标签内显式声明 a。
至少它适用于使用 MasterPages 的基本 ASP.NET 页面。对于 ASP.NET MVC 不太确定。
清除 masterpages 标签上的 runat="server" 属性
设置标题的最佳方法似乎是在此处的标记声明中使用标题属性:
<%@ 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"
希望这有点。