Asp.net-mvc – Adding title in contentplaceholder adds second empty title tag

asp.net-mvctitle

My master page has a contentplaceholder in the head tag.

Because I want my page's title to represent the function of the current page and because I want the title to be translated in the user's language I have added a title tag in the page's head's contentplaceholder. All jolly and good except that now there appears a second, empty title tag that off course isn't valid.

Any ideas how to solve this?

Best Answer

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.