2010-12-02 4 views
1

제 질문은 대리인의 일부로 호출되는 메서드를 통해 특성을 검색하는 것과 관련됩니다. [예 : Page.OnLoad 또는 Button_Click] _Page_Load 메서드를 통해 null을 반환합니다.

I 가지고 방법 _ _ [AnyWebControl_Event 상기 _ [를 Page_Load] _ 또는 위에 [MyMethodAttribute (PropertyOne, PropertyTwo)] 때문이다. 이 메소드 속성은 런타임에 메소드가 배치 된 메소드에 대해 조회해야합니다. 이 방법은 모든 웹 페이지의 코드 숨김에 있습니다. 모든 웹 페이지는 BaseWebPage에서 파생됩니다. 이벤트는 페이지로드 또는 포스트 백 이벤트가 될 수 있습니다. 이벤트가 페이지로드 또는 포스트 백에 의해 트리거되었는지 여부에 따라 컨트롤 [페이지 또는 포스트 백]에 대한 핸들을 얻고 [MyMethod] 메소드를 추가하여 실행합니다.

_eventControl = GetPostBackControl(page); //__EVENTTARGET or any control 
    if (_eventControl != null) // this is a postback control for any page 
    { 
     _eventControl.Load += new EventHandler(MyMethod); 
    } 
    else // this is PageLoad method for any page 
    { 
     _eventControl = page; 
     page.Load += new EventHandler(MyMethod); 
    } 

그 후, 나는 이벤트 [예. Page_Load]가 발생했습니다. 여기서 메소드에 대한 핸들을 얻을 수 없으며 그 주위에서 다른 방법으로 시도했습니다.

로드 중 또는 다시 게시를 트리거 한 이벤트 대리자를 쿼리하는 방법 중 하나가있었습니다. 하지만 이벤트는 클래스 외부에서 액세스 할 수 없기 때문에 사용할 수 없습니다. MyDelegate.GetInvocationList() null로 반환합니다.

도움을 주시면 감사하겠습니다. 좀 더 노력 후


, 나는 __EVENTARGUMENT 나에게 메소드 이름을 제공 할 것입니다 것으로 나타났습니다. 지금 다른 문제가 있습니다. Page_Load 메서드의 ASPX 페이지를 반영하면 null이 반환됩니다. 아이디어가 있으십니까?


Page_load는 protected 메서드이며 Public BindingFlags를 사용하고있었습니다. 그래서 NonPublic | 인스턴스 플래그 재 지정을 사용하여 Page_Load 메소드를 사용할 수 있습니다

+0

문제점에 대한 해결책을 찾았습니다. Page_Load 메서드가 보호되어 있고 공용 바인딩 플래그를 사용하고있었습니다. 내 문제가 해결되었습니다. – ank07

답변

1

좀 더 노력한 후에 __EVENTARGUMENT이 (가) 메소드 이름을 제공함을 발견했습니다.


Page_load는 protected 메서드이며 Public BindingFlags를 사용하고있었습니다. 그래서 NonPublic | 인스턴스 플래그 재 지정을 사용하여 Page_Load 메서드를 사용할 수 있습니다.

0

Page.IsPostback은 어떨까요? IsPostback이 false이면 페이지로드가 포스트 백에 의해 트리거되지 않고 새로운로드입니다.

+0

IsPostback은 다시 게시 여부를 알려줍니다. 그러나 어떤 제어 및 whioh 이벤트에 대한 정보는 제공하지 않습니다. __EVENTTARGET처럼 __EVENTARGUMENT를 사용하여 이벤트 이름을 찾을 수 있습니다. 그래서 부분적으로 답을 찾았습니다. – ank07

관련 문제