2009-03-23 2 views
4

MVC를 사용하여 콘텐츠 위치 홀더가있는 마스터 페이지에 제목을 추가하고 있습니다. 기본 MVC의 masterpage 템플릿은 다음 코드를 사용 : asp.net masterpage에서 기본 제목에 추가

<head runat="server"> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title><asp:ContentPlaceHolder ID="TitleContent" runat="server"/></title> 
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" /> 
</head> 

I 콘텐츠 홀더의 전면에 채무 불이행 텍스트를 추가하려고

, 그것은 최종 렌더링 된 페이지의 텍스트를 표시하지 않습니다. 추가 된 contentplaceholder 텍스트가있는 기본 제목을 표시하도록 페이지를 가져 오려고합니다.

예 :
(기본 텍스트) (의 ContentPlaceHolder 텍스트)
마이 페이지 - 난 뒤에 코드를 사용하지 않고이 작업을 수행 할 수있는 방법을 찾고 있어요

<head runat="server"> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>My Page - <asp:ContentPlaceHolder ID="TitleContent" runat="server"/></title> 
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" /> 
</head> 

소개. 어떤 아이디어?

+0

당신은 머리 태그에서 RUNAT = "서버"를 빼앗아 때 어떻게됩니까? 개인적으로 나는 컨트롤러 액션 내에서 ViewData [ "PageTitle"]와 같은 것으로 설정할 것입니다. – Charlino

+0

가능한 해결책을 찾기 위해 테스트를 실시한 때부터 runat = "server"태그의 존재 여부에 관계없이 동일한 조치가 취해졌습니다. – Aaron

답변

7

Phil Haack은 실제로 내 질문에 대한 해결책 인 기사를 게시했습니다. Haacked에서 찾을 수 있습니다.

요약하면 머리에 렌더링되는 모든 것이 컨트롤로 렌더링되고 위 질문에 대한 해결책은 제목에 asp 리터럴 컨트롤을 넣어 텍스트를 올바르게 생성하는 것입니다.

<%@ Master ... %> 
<html> 
<head runat="server"> 
    <title> 
    <asp:ContentPlaceHolder ID="titleContent" runat="server" /> 
    <asp:LiteralControl runat="server" Text=" - MySite" /> 
    </title> 
</head> 
... 
+0

Alexander가 언급했듯이 알 수없는 서버 태그 예외가 발생합니다. –

+0

이 작품은 나를 위해. –

+4

"LiteralControl"대신 "Literal"을 사용해보세요 – rudib

1

MVC를 사용하고 컨트롤러에서 페이지의 일부 개체에 제목을 전달하는 경우이 코드를 표시하기 위해 인라인 코드를 사용합니다.

<head> 
<title>My Page - <%= ViewData.Get<Model.Page>().Title %></title> 
</head> 

노트의 점으로 우리는 우리가이 모든보기에서 파일 뒤에있는 모든 코드를 제거했습니다 :

그러므로 우리는 마스터 페이지에 데이터보기에서 직접 입력 한 데이터를 얻기 위해 MVC에있는 contrib 기능을 사용 보기를 더 읽기 쉽게 만들 때마다 각보기에 대한 코드를 작성하는 것보다 훨씬 효율적입니다.

+0

문제를 해결할 수는 있지만 마스터 페이지에서만 텍스트 "내 페이지"를 가질 수있는 솔루션을 찾으려고합니다. 제목이 바뀌는 방식으로 각보기에서 변경할 필요가 없습니다. 그래도 응답 해 주셔서 감사합니다. – Aaron

9

그렇지 않으면 우리는 "알 수없는 서버 태그 '오류 때문에 우리가,

<asp:Literal runat="server" Text=" - MySite" /> 

대신 문서에 언급

<asp:LiteralControl runat="server" Text=" - MySite" /> 

의 사용 해봐야 할 것 같습니다.

4

왜?

<title> 
    <asp:ContentPlaceHolder ID="titleContent" runat="server" /> 
    <%= "- My Site" %> 
</title> 

잘 작동합니다. 번거 로움없이?

+0

쉽고 매력적입니다 ... – RRTW

2
내가 이것을 사용하는 것을 선호

:

<title>Site Name - <%=Page.Title%></title> 

리터럴 컨트롤을 사용하여보다 훨씬 청소기

..

관련 문제