ContentPlaceHolder에 제목을 추가하면 두 번째 빈 타이틀 태그가 추가됩니다
-
21-08-2019 - |
문제
내 마스터 페이지에는 헤드 태그에 Contentplaceholder가 있습니다.
내 페이지 제목이 현재 페이지의 기능을 나타내기를 원하고 사용자의 언어로 제목을 번역하기를 원하기 때문에 Page의 Head의 Contentplaceholder에 제목 태그를 추가했습니다. 이제 오프 코스가 유효하지 않은 두 번째 빈 타이틀 태그가 나타나는 것을 제외하고는 모든 유쾌하고 좋은 것입니다.
이것을 해결하는 방법이 있습니까?
해결책
나는 같은 문제에 부딪쳤다 해결책을 찾았습니다 그것은 효과가있는 것 같습니다. 그것은 꽤 해킹되지만 동시에 아주 간단합니다. 헤드에 다른 제목 태그를 추가하고 runat = "Server"속성을 넣은 다음 가시성을 False로 설정하십시오.
<title visible="false" runat="server"><%-- hack to turn the auto title off --%></title>
다른 팁
에 따르면 W3C 사양:
모든 HTML 문서에는 헤드 섹션에 제목 요소가 있어야합니다.
따라서 ASP.NET 플랫폼은 표준을 준수하고 페이지에 빈 타이틀 태그를 추가하여 유효한 마크 업을 달성하는 데 도움이됩니다. 콘텐츠 자리 표시자를 통해 하나를 추가하려고하는 것을 알 수 없습니다.
Classic ASP.NET에서 귀하의 옵션은 다음과 같습니다.
- @Page 지시문 제목을 사용 하여이 태그의 내용을 설정하십시오.
- Page.title 속성을 사용하여 코드 뒤에있는 속성을 사용하여 프로그래밍 방식으로 값을 설정하십시오.
ASP.NET MVC를 사용하는 경우 기본 사이트 마스터 파일에는 다음 기본 텍스트가 있습니다.
<title><%= Html.Encode(ViewData["Title"]) %></title>
기본 컨트롤러는 다음과 같습니다.
ViewData["Title"] = "Home";
작업 결과 내에서 다시 페이지 제목에 대한 프로그래밍 방식으로 액세스 할 수 있습니다.
일반적으로 Page 특정 정적 스크립트 및 CSS 링크를 추가하기 위해 HeadContent Content 자리 표시자를 사용합니다.
당신은 할 수 있습니다 이 질문에 게시 한 솔루션을 사용해보십시오
@Page Directive에 페이지 제목을 설정하기위한 Title이라는 속성이 있습니다. 페이지 제어의 속성으로 액세스 할 수 있습니다.
콘텐츠 장소 홀더를 통해 태그 내에서 명시 적으로 선언 할 필요는 없습니다.
적어도 MasterPages를 사용하는 기본 ASP.NET 페이지 용입니다. ASP.NET MVC는 확실하지 않습니다.
MasterPages 태그에서 runat = "Server"속성을 지우십시오.
타이틀을 설정하는 가장 좋은 방법은 마크 업 선언에서 제목 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"
이것을 다소 희망합니다.