我的母版页在head标记中有一个contentplaceholder。
因为我希望我的页面标题代表当前页面的功能,并且因为我希望用用户的语言翻译标题,所以我在页面的head的contentplaceholder中添加了一个标题标签。除了现在出现第二个空的标题标签,当然无效之外,所有这些都很快乐。
任何想法如何解决这个问题?
答案 0 :(得分:6)
根据W3C spec:
每个HTML文档必须在HEAD部分中有一个TITLE元素。
因此,ASP.Net平台符合标准并在页面中添加空标题标签以帮助您实现有效标记 - 它不知道您将通过内容占位符添加标记。
在经典ASP.Net下,您的选择是:
如果您使用的是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"
希望这一点。