컨트롤 클래스 (표준)에서 동적으로로드되는 다른 사용자 컨트롤 (헤더) 내에 중첩 된 사용자 컨트롤 (탐색)이 있습니다.ASP.NET의 사용자 컨트롤에 이벤트 전파
사용자 컨트롤, 탐색 및 머리글에는 AutoEventWireup = false가 있습니다.
제어 클래스 표준 호출은 구성 항목에서 Header 사용자 정의 컨트롤을로드합니다.
private void layoutAndRender(HtmlTextWriter output, string UserControlKey, NameValueCollection UserControlsConfiguration)
{
if(UserControlsConfiguration[UserControlKey] != null && UserControlsConfiguration[UserControlKey].ToString() != "")
{
string suc = System.Web.HttpContext.Current.Request.ApplicationPath + UserControlsConfiguration[UserControlKey].ToString();
UserControl ucToRender = (UserControl)this.Page.LoadControl(suc);
ucToRender.RenderControl(output);
}
}
내 문제는 내가 Page.Request 및 Page.Response을 수용 할 수있는 탐색 사용자 컨트롤의 객체를 초기화 할 것인지, 그러나 사건 뒤에 탐색 코드에서 발사 될 것 같지 않습니다.
this.browser = new Browser(this.Request, this.Response);
내가 탐색 생성자 동안이 일을 시도했지만 this.Request 및 this.Response는 그 시간에 설정되지 않습니다
내 객체를 초기화하는 데 사용하고 코드입니다.
void Page_Load(object sender, System.EventArgs e)
메서드의 문을 사용하여 시도했지만 탐색 생성자에 this.Load += new System.EventHandler(this.Page_Load);
이 있어도 실행되지 않는 것 같습니다.
Page_Init 및 Page_PreRender에 대해서도 유사한 문구를 사용해 보았지만이 중 아무 것도 실행되지 않는 것 같습니다.
LoadControl과 함께로드 된 컨트롤이 Load 또는 Init 이벤트를 발생시키지 않습니까?로드 한 방식으로로드되면 포함될 수있는 모든 사용자 정의 컨트롤에 적용됩니까? AutoEventWireup
가로드 할 컨트롤 false
로 설정되어
어디에서 온 'layoutAndRender' 메서드는 무엇입니까? – rsbarro
Control 클래스 Standard 내에서 호출됩니다. 불행히도, 이것은 레거시 코드이며, 항상 올바른 방법으로 수행되지는 않습니다. – Reuben
좀 더 구체적으로 알려주시겠습니까? 'LayoutAndRender'는'Standard'의'Page_Load' 메쏘드에서 호출 되었습니까? 아니면'Render' 메쏘드 같은 다른 곳에서 왔습니까? – rsbarro