2009-02-09 4 views
1

호스트 페이지의 Oninit에서 동적으로 UC를로드합니다.동적으로로드 된 사용자 정의 컨트롤에서 이벤트 발생시키기

UC의 Oninit에서 이벤트를 발생시킵니다. null 참조 예외가 발생합니다. 코드는 다음과 같습니다 :

//In the UC 

public event CommandEventHandler DoneProcessing; 
protected override void OnInit(EventArgs e) 
{ 
     //Raise a event 
     CommandEventArgs cmdEventArgs = new CommandEventArgs("done", "test"); 
     DoneProcessing(this, cmdEventArgs); 
} 

내가 대신하는 OnInit의 페이지로드에서 이벤트를 발생시킬 때, 잘 작동하지만 자식 컨트롤을로드 할 수 있기 때문에 나는이 작업을 수행 할 수 viewstate가 (상황이 제대로 작동하려면 등), 나는 이것을 OnInit에서 할 필요가있다.

답변

0

처리기가없는 경우를 대비하여 이벤트를 발생시키기 전에 항상 null 확인을하는 것이 가장 좋습니다.

if (DoneProcessing != null) { 
    DoneProcessing(this, cmdEventArgs); 
} 
1

나는 당신이 Event Bubbling을 시도하고 있다고 생각합니다. 여기에 (C#을) ASP.NET에서 웹 사용자 컨트롤에서 이벤트 버블 링이라는 Ode to Code Reference입니다

나는 그러나 나는까지의 루트를 생각하면 표준

if (DoneProcessing != null) 
    DoneProcessing(this, cmdEventArgs); 

를 사용하여 오류를 중지 할 수 있습니다 의심 이미 언급했듯이 문제는 여전히 페이지가로드되는 방식과 관련이 있습니다. 주변에 해킹이 있지만이를 수행하기위한 "적절한"(또는 권장) 방법은 이벤트 버블 링입니다.

관련 문제