Adding title in contentplaceholder adds second empty title tag

自古美人都是妖i 提交于 2019-12-03 16:10:30

I ran into the same problem and found a solution that seems to work. It's pretty hacky but at the same time pretty simple. Just add another title tag in the head, put a runat="server" attribute inside it and then set it's visibility to false:

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

According to the W3C spec:

Every HTML document must have a TITLE element in the HEAD section.

Therefore, the ASP.Net platform is conforming to standards and adding an empty title tag to your page to help you achieve valid markup - it doesn't know you are about to add one through a content placeholder.

Under classic ASP.Net your options are:

  1. Use the @page directive Title to set the content of this tag
  2. Use the Page.Title property from your code behind to set the value programmatically.

If you are using ASP.Net MVC, the default Site.Master file had the following default text:

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

And the default controller had:

ViewData["Title"] = "Home";

within the action result, again allowing for programmatic access to the page title.

Generally I use the HeadContent content placeholder for adding page specific static scripts and css links.

There is an attribute in the @Page directive called Title for setting the title of the page. It is also available accessible as a property on the Page control.

You do not need to explicitly declare a within the tag via the content place holder.

At least it is for basic ASP.NET pages using MasterPages. Not so sure for ASP.NET MVC.

Clear the runat="server" attribute on masterpages tag

It would appear the best way to set the title would be to use the title attritube in the markup declaration here:

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

OR Just set it in page_load with

Page.Title = "Your page title"

Hope this somewhat.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!