2012-05-09 4 views
4

FindControl을 사용하지 않고 콘텐츠 페이지에서 마스터 페이지에 레이블을 설정하려고합니다. 그래서, 마스터 페이지에서 I 선언 :마스터 페이지에서 컨트롤 찾기

public partial class MainMasterPage : System.Web.UI.MasterPage 
{ 

    public string UserOfficeLabel 
    { 
     get { return lblUserOffice.Text; } 
     set { lblUserOffice.Text = value; } 
    } 
    public string OfficeLocationLabel 
    { 
     get { return lblOfficeLocation.Text; } 
     set { lblOfficeLocation.Text = value; } 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
    .... 
    } 
} 

"UserOfficeLabel"와 "OfficeLocationLabel"마스터 페이지에 레이블이 있습니다. 그런 다음 컨텐츠 페이지 (에서 .aspx) 내가 "페이지"지시문에서 다음 지시문을 추가 : 나는 액세스하려고 뒤에 conent 페이지의 코드에서

<%@ MasterType VirtualPath="~/Main/MainMasterPage.master" %> 

(.cs 파일) 설정/라벨 :

Master.UserOfficeLabel = ... 

이지만 UserOfficeLabel은 Master 용 옵션이 아닙니다 (VS Intellisense는이를 옵션으로 나열하지 않습니다). 어쨌든 그것을 추가하면 "MainMasterPage.UserOfficeLabel은 보호 수준에 접근 할 수 없습니다"라고 표시됩니다.

+1

왜 FindControl을 사용하지 않으시겠습니까? –

+1

"나사가 있는데 나사로 돌리고 싶지만 나사 드라이버를 사용하고 싶지 않습니다. 제발 도와주세요. 왜 그런지 말하지 않겠습니다." – asawyer

+0

FindControl 사용은 OO/캡슐화의 관점에서 좋지 않으므로 가능한 경우 피해야합니다. 이것은 C++에서 포인터로 private 변수를 노출하는 것과 유사합니다. 이 질문에 대한 답변이되기를 바랍니다. – NoBullMan

답변

0

여기에서 찾고있는 것을 찾을 수있을 것 같습니다 : http://odetocode.com/blogs/scott/archive/2005/07/16/mastertype-in-asp-net-2-0.aspx. 이론적으로 당신은 당신이 당신이

Dim LocalMasterPageRef As MyMasterPageName 
LocalMasterPageRef = CType(Me.Master, MyMasterPageName) 
... 
LocalMasterPageRef.xxxx 

변수

는 희망이 도움이 선언에 의해 시도하고있는 무슨 같은 일을 한 부분 클래스

Public Shadows ReadOnly Property Master() As otc 
    Get 
     Return CType(MyBase.Master,otcMaster) 
    End Get 
End Property 

내부에 아래의 코드를 볼 수 컴파일 할 때.

+0

Juan에게 감사드립니다. 코드를 추적하면 마스터 페이지에서 올바른 레이블을 가져 와서 텍스트를 올바르게 설정하지만 페이지를 새로 고치지 않으면 페이지의 레이블이 변경되지 않는 것 같습니다. – NoBullMan

+0

마스터 페이지 레이블 변경은 콘텐츠 페이지의 드롭 다운 목록에서 'SelectedIndexChanged event hanlder'로 발생하며이 드롭 다운 목록 (다른 컨트롤과 함께)은 Ajax 업데이트 패널 안에 있습니다. 이것이 차이를 만들지 확실하지 않습니다. – NoBullMan

+0

잘 모르겠습니다 ... 1) 마스터 페이지의 핸들러 이벤트와 자식 윈도우에서 레이블을 변경해야하는 필요성을 이해하지 못했습니다. 2) Ajax 업데이트 패널을 보았습니다. 그 구성 요소와 관련된 몇 가지 문제를 읽었다 고 생각합니다. 행운을 빕니다 –

관련 문제