2011-10-31 6 views
0

나는 ASCX 컨트롤에서 호출하는 home.aspx에 HasAdminRole() 메서드가 있습니다. 그리고 ASCX은 (Home) this.Page를 사용하여 작동합니다 .HasAdminRole()을 home.aspx의 사용자 정의 컨트롤과 함께 사용합니다.ASCX 컨트롤에서 ASPX 메서드 호출

다른 ASCX 페이지 Adminuser.aspx에 동일한 ASCX를 추가하면 다음과 같은 오류가 발생합니다. ASCX가 home.aspx에서 다른 ASPX 페이지에서 (홈) this.Page) .HasAdminRole()을 호출하려고 시도합니다.

'ASP.adminuser_aspx'유형의 객체를 'CALE'유형으로 형변환 할 수 없습니다. 오류가 발생합니다. .집'.

당신의 .ASPX에서하고 속으로 당신의 관리자/역할 논리를 이동 제안합니다 Home.aspx

+0

대신 제어 방법을 이동 하시겠습니까? 또는 모든 페이지에서 파생 된 기본 페이지 클래스를 만들면 컨트롤에서 찾을 수 있습니다. – rossisdead

+0

그것은 방법을 위해 작동합니다. 하지만, 또한 aspx에 버튼 이벤트에 액세스해야합니다. 사용자가 다른 페이지로 이동하기로 결정한 경우 ascx 내에서 해당 페이지에 대해 button_click 메서드를 호출합니다. if (Menu1.SelectedValue == "showestimateportfolio") ((집) this.Page) .btnEstPortfolio_Click (보낸 사람, 전자); 이것은 Home.aspx에 Im하지만 다른 aspx 페이지에서 캐스팅 오류가 발생하면 작동합니다. – user1022776

답변

2

을 하나의 메소드를 호출하기 위해 여러 ASPX의 사용자 제어 시도에서 동일한 ASCX를 사용할 때 나는이 문제를 해결하려면 어떻게 .aspx 및 .ascx에서 액세스 할 수있는 클래스입니다. 그것은 약간의 '우려의 분리'와 공통된 영역에서의 논리를 갖는 약간의 깔끔함입니다. 기본적으로 페이지 비하인드 페이지 내에서 페이지 관련 로직 만 유지합니다. 모든 페이지의 코드 숨김 또는 다른 헬퍼 클래스에서

public static class Roles 
{ 
    public static HasAdminRole(User someUser) 
    { 
     // implementation 
    } 
} 

전화를 :

User foo; 
bool isAdmin = Roles.HasAdminRole(foo); 
+0

그 방법에 대해 작동합니다. 하지만, 또한 aspx에 버튼 이벤트에 액세스해야합니다. 사용자가 다른 페이지로 이동하기로 결정한 경우 ascx 내에서 해당 페이지에 대해 button_click 메서드를 호출합니다. if (Menu1.SelectedValue == "showestimateportfolio") ((집) this.Page) .btnEstPortfolio_Click (보낸 사람, 전자); 이것은 Home.aspx에 Im하지만 다른 aspx 페이지에서 캐스트 오류가 발생하면 작동합니다. – user1022776

관련 문제