2014-10-23 2 views
0

안녕하세요. 미리 감사드립니다.Master Base 페이지 클래스의 Base Page 속성에 액세스하십시오.

나는 두 개의 클래스를 정의하는 기본 페이지, 마스터 페이지의 출력을 관리하는 페이지에 대한 자체 변수를 관리하는 하나 하나 만든

:

public class MyBasePage : BasePage 
{ 
     public bool IsEmployee; 

     protected new void Page_Init(object sender, EventArgs e) 
     { 
      base.Page_Init(sender,e); 
      IsEmployee = GetEmployee(); 
     } 
} 

public class MyMasterBasePage : BaseMasterPage 
{ 
    public new void Page_Init(Object sender, EventArgs e) 
    { 
      base.Page_Init(sender,e); 
      session = GetSession(); 
    } 
} 

내가 마스터에서 IsEmployee에 액세스 할 필요를 페이지. 마스터 페이지에서 기본 페이지의 인스턴스를 호출 한 다음 호출하려고 시도했지만 부울이 false로 돌아오고 동일한 결과를 가진 클래스에서 직접 동일한 작업을 시도했습니다. 세션에 값을 넣을 수는 있지만 실제로 그렇게하고 싶지는 않습니다. 변수에 액세스 할 수있는 다른 방법이 있습니까?

+0

왜 마스터 페이지에 IsEmployee 속성을 설정하고 있습니까? 그것은 디자인의 관점에서 보면별로 의미가 없습니다. – mason

+0

해당 권한을 기반으로 제어해야하는 중첩 마스터 페이지에 표시되는 일부 항목이 있습니다. 이 목표를 달성 할 수있는 더 좋은 방법이 있다면 나는 이것을 알고 싶다. –

답변

1
public class MyMasterBasePage : BaseMasterPage 
{ 
    ... 
    private bool IsEmployee 
    { 
    get 
    { 
     if (Page is MyBasePage) 
     return ((MyBasePage)Page).IsEmployee; 
     else 
     return false; 
    } 
    } 
} 

업데이트 :

public class MyBasePage : BasePage 
{ 
    public bool? isEmployee; 
    public bool IsEmployee 
    { 
    get 
    { 
     if (!isEmployee.HasValue) 
     { 
     isEmployee.Value = GetEmployee(); 
     } 
     return isEmployee.Value; 
    } 
    } 

} 

그리고 제거 라인 MyBasePage.Page_Init에서

IsEmployee = GetEmployee(); 

.

+0

이 코드를 사용하면 기본 페이지 값에 액세스 할 수 있지만 실제로 IsEmployee를 채우는 메서드가 get 문을 실행 한 후에 마스터 페이지에서 IsEmployee를 채우는 것이 발생하므로 추가 문제가 있음을 발견했습니다. 여전히 정확한 값을 얻지 못하고 있습니다. –

+0

마스터 페이지와 콘텐츠 페이지의'Page_Init' 메쏘드가이 메쏘드들에 중단 점을 배치하여 호출되는 순서를 확인할 수 있습니다 - 나는이 순서가 무엇인지를 기억하지 못합니다. 이 문제를 해결하려면 필요에 따라 'MyBasePage.IsEmployee' 속성을 만듭니다. 답변 업데이트를 참조하십시오. – Igor