내가 알고 싶은 것은 UserControl
에 사용할 수있는 것과 같이 HttpContext
렌더링에 매개 변수를 삽입하는 기법이 있고 페이지 수명주기 이벤트 (Page_Init, Page_Load)가 렌더링 중에 호출됩니다 (HttpContext.Current.Server.Execute()
동안)?특수하게하지 않고 동적으로 생성 된 UserControls에 매개 변수 삽입
이러한 기술을 사용하면 동적 렌더링을 위해 특수화하지 않고도 모든 UserControl에 데이터를 삽입 할 수 있습니다 (예 : 원격 서비스 호출). ASPX 페이지에서 정적 컨트롤 인 경우와 같은 방법으로로드됩니다. 이 기본 코드 단편
시작 : 나는 그가 그의 UserControls
의 각 데이터 멤버를 추가하고 전에 해당 멤버에 데이터 소스를 주입하는 반사를 사용하는 @ScottGu ViewManager 예를 본 적이
Page page = new Page();
UserControl ctl = (UserControl)page.LoadControl(controlSpec);
page.Controls.Add(ctl);
// want to inject data into the control at this point
StringWriter writer = new StringWriter();
HttpContext.Current.Server.Execute(page, writer, true);
String renderedContent = writer.ToString();
return renderedContent;
컨트롤은 HTML로 렌더링됩니다.
Stefan Sedich's도 @ScottGu 예제를 사용하여 동일한 내용을 허용하지만 리플렉션을 피할 수있는 일반 ViewManager<Control>
을 가져 오는 것으로 나타났습니다.
예를 들어 UserControl
을 렌더링하기 전에 HttpContext에서 Request
개체 또는 QueryString
에 매개 변수를 추가하고 싶습니다.
당신이 제안하는 것은 실행 가능한 해결책이지만, 나에게는보기에 좋지 않은 것처럼 보입니다. 게다가, 그것은 피하려고 노력하고있는 UserControl을 전문화해야합니다. –