Adding title in contentplaceholder adds second empty title tag

谁说我不能喝 提交于 2019-12-05 01:23:54

问题


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?


回答1:


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>



回答2:


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.




回答3:


You could try the solution I posted to this question




回答4:


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.




回答5:


Clear the runat="server" attribute on masterpages tag




回答6:


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.



来源:https://stackoverflow.com/questions/370783/adding-title-in-contentplaceholder-adds-second-empty-title-tag

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