2013-12-23 3 views
1

내 웹 사용자 정의 컨트롤을 만들어서 자리 표시 자에 동적으로 렌더링 할 수있게 도와 줄 사람이 있습니까?웹 사용자 컨트롤을 PlaceHolder로 렌더링하는 방법

모든 functionallity가 클라이언트 쪽이기 때문에 aspx에서 디자인하는 서버 쪽 코드가없는 웹 사용자 정의 컨트롤을 만들었습니다.

웹 다른 페이지

protected void button1_Click(object sender, EventArgs e) 
{ 
    WebControlDemo wcd = new WebControlDemo(); 
    this.placeHolder1.Controls.Add(wcd); 
} 

에서 제어

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebControlDemo.ascx.cs" Inherits="Project1.Web.UI.WebControlDemo" %> 
<div> 
Blah blah blah blah 
</div> 

하지만 난 아무것도 볼 수 없습니다. 그래서 내가 추가해야 할 것은 마침내 렌더링 될 수 있습니까?

답변

6

코드에서 수동으로 사용자 컨트롤을 만들지 마십시오. Page 객체의 LoadControl 메소드를 사용해야합니다. 그런 다음 올바르게 초기화합니다. 이처럼

protected void button1_Click(object sender, EventArgs e) 
{ 
    WebControlDemo wcd = this.LoadControl("~/SomePath/WebControlDemo.ascx") as WebControlDemo; 
    this.placeHolder1.Controls.Add(wcd); 
} 
+0

감사합니다. 그것은 효과가 있었지만 동일한 컨트롤 내에서 초기화를 수행하여 자리 표시 자에 직접 추가하는 방법이 있습니까? –

+0

초기화로 무엇을 의미합니까? 또한 사용자 정의 컨트롤에는 Page_Load 메서드가 있으므로 초기화 할 수 있습니다. –

+0

동일한 컨트롤 Init 이벤트 내에서 동일한 작업을 수행하려면 MainControl에서 컨트롤을 노출하고 placeHolder.Controls.Add (new WebControlDemo())를 직접 사용하지 않으려면 LoadControl을 사용합니다. –

관련 문제