2011-08-15 3 views
4

나는 마스터 컨트롤의 헤드에 뭔가를 주입하고 싶습니다.사용자 정의 컨트롤에서 마스터 페이지 콘텐츠 컨트롤을 어떻게 참조합니까?

<asp:ContentPlaceHolder ID="head" runat="server"> 
</asp:ContentPlaceHolder> 

사용자 컨트롤 :

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> 
    <link type="text/css" rel="stylesheet" href="/Shared/Css/Navigation.css" /> 
</asp:Content> 

그러나 그것은 준다 나는 ... 다음과 같은 접근 방식 (마스터 페이지 및 사용자 컨트롤 mmarkup 조각)를 사용하는

MasterPage를 시도했다 오류 :

Content controls have to be top-level controls in a content page or a nested master page that references a master page.

그렇다면 런타임시 컨트롤에서 마스터 페이지에 내용을 넣으려면 어떻게해야합니까?

답변

3

마스터 페이지의 공개 방법을 통해 마스터 페이지 콘텐츠에 액세스 할 수 있습니다. 귀하의 질문에서 예제를 취하면 마스터 페이지에서 사용자 정의 컨트롤이나 페이지의 다음과 같은 수정 코드로 링크의 href를 설정할 수 있습니다.

마스터 페이지에서 "일반 콘텐트"로 링크를 소개합니다 코드 뒤에있는 코드에 액세스 할 수 있도록 ID를 제공하십시오.

<link id="link" type="text/css" rel="stylesheet" /> 

href가 설정된 마스터 페이지에 속성을 추가하십시오. 이 페이지에서이 액세스하려면

public string LinksHref 
{ 
    get { return link.Href; } 
    set { link.Href = value; } 
} 

당신은 MasterType 지시문을 추가 할 수 있습니다.

<%@ MasterType VirtualPath="~/Site.Master" %> 

컨트롤 코드의 속성을 변경하십시오. 당신은 사용자 컨트롤에서이 액세스하려면

Master.LinksHref = "/Shared/Css/Navigation.css"; 

, 당신은 자신에 의해 캐스팅을 수행 할 MasterType 지시문을 사용 할 수 없습니다 :

((MasterPageClassName)Page.master).LinksHref= "/Shared/Css/Navigation.css"; 
관련 문제