문제

마스터 페이지를 사용하는 콘텐츠 페이지에있는 사용자 컨트롤에서 마스터 페이지를 강력하게 입력하는 방법을 찾고 있습니다.

안타깝게도 사용자 컨트롤에서 사용할 수 없습니다.

<%@ MasterType VirtualPath="~/Masters/Whatever.master" %>

사용자 컨트롤에서 마스터 페이지의 속성에 액세스하려고 노력하고 있으며 여러 콘텐츠 페이지에서 동일한 사용자 컨트롤을 사용하기 때문에 속성을 마스터 페이지에서 컨텐츠 페이지로 전달할 필요가 없습니다. 하나의 변화, 한 곳.

도움이 되었습니까?

해결책

노력하다 Page.Master.

Whatever whatev = (Whatever)Page.Master;

적절한 것을 추가해야합니다 using 파일의 상단에 대한 명령문 또는 마스터 페이지 유형 인라인에 적합합니다.

하나의 잠재력 Gotcha는이 컨트롤이 마스터 페이지가 같은 유형이 아닌 다른 페이지에서 사용되는 경우입니다. 이것은 런타임에만 잡히게됩니다.

다른 팁

USERCONTROL에서 Page.FindControl ( "Name")을 사용해 보셨습니까?

내가 찾은 가장 좋은 방법은 실제로 Usercontrol을 기반으로하는 사용자 정의 클래스를 구축하는 것입니다. 마스터 페이지가 만날 때까지 this.page.parent를 통해 낚시하는 액세서리가있는 마스터 부동산을 제공하는 것입니다. 중첩중인 경우이 단계는 불필요하지 않습니다. 그렇지 않으면 해당 웹 컨트롤을 사용하려는 마스터 페이지의 유형으로 반환하십시오. 그런 다음 새로운 사용자 컨트롤을 추가하면 기본 클래스를 사용자 정의 클래스 이름으로 변경하십시오. .master 속성은 사용하려는 마스터 페이지로 적절하게 액세스 할 수 있습니다.

VB에서 내가해야 할 일은 이것을 바꾸는 것뿐이었습니다.

Dim lAuthLevel As Integer = Master.MasterContact.AuthenticationLevel

이에:

Dim lAuthLevel As Integer = CType(Me.Page.Master, main).MasterContact.AuthenticationLevel

그래서 모든 참조 주인 ~이 되다 CType (Me.Page.Master, TypeofMaster)

이 경우 "Main"이라는 단어는 마스터 페이지 상단의 선언에서 얻습니다. 예를 들어

이 경우 "메인"은 :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top