2010-08-24 6 views
2

ASP.NET 콘텐츠 페이지가 있습니다. 콘텐츠 페이지와 연결된 HTML 태그는 마스터 페이지에 선언되어 있습니다. 콘텐츠 페이지에서 HTML 태그에 속성을 추가해야합니다. 내 문제는 콘텐츠 페이지에서이 HTML 태그에 액세스하는 방법을 모르겠다는 것입니다.ASP.NET 콘텐츠 페이지의 HTML 태그에 특성 추가

누군가가이 작업을 수행하는 방법을 알려주시겠습니까?

은 제대로 작업을 수행하는 방법을 알아낼 시간의 부족에 기인 모든 해킹과 마찬가지로 당신이

답변

1

오늘 아침 루틴을 작성하여 중첩 된 마스터 페이지를 사용하는 경우 마스터 페이지 컨트롤을 마스터 페이지 컨트롤 위로 재귀 적으로 가져올 수있었습니다. 확장 메서드로 구현했습니다. 아마 당신은 그것을 유용하게 찾을 수 있습니다 :

public static TResult FindControlInMasterPages<TResult>(this MasterPage masterPage, string id) 
    where TResult : Control 
{ 
    return masterPage == null ? null : 
      masterPage.FindControl(id) as TResult ?? FindControlInMasterPages<TResult>(masterPage.Master, id); 
} 

당신은 너무 같은 것을 적용 할 수 :

this.Master.FindControlInMasterPages<Label>("myLabel").Attributes["attr"] = "value"; 
0

내가 못생긴 해킹 한 번 이런 짓을 감사드립니다.

마스터 페이지의 <HTML> 태그를 <asp:Literal /> 컨트롤로 대체 한 다음 리터럴 컨트롤을 콘텐츠 페이지에서 액세스 할 수있는 마스터 페이지의 속성으로 표시했습니다.

끔찍한 방법이지만, 이보다 훨씬 더 나은 대답이있을 것이라고 확신합니다.하지만 구멍에 있다면 도움이 될 것입니다.

1

당신이

public Label MyLabel 
{ 
    get { return myLabel; } 
} 

그런 다음 쉽게 콘텐츠 페이지에서 액세스 할 수 있습니다에있는 경우 항상 마스터 페이지의 속성으로 노출 할 수 있습니다 :

var master = Master as MyAwesomeMasterPage; 

if(master != null) 
    ((MyAwesomeMasterPage)Master).MyLabel.Attributes["bgcolor"] = "lightblue"; 

This MSDN article 당신을 더 줄 것이다 자세한 내용은 마스터 페이지 속성을 강력하게 입력하는 방법을 포함합니다.

관련 문제