2013-12-23 18 views
1

有人可以幫助我創建自定義Web用戶控件以動態呈現到佔位符中嗎?如何將Web用戶控件呈現到PlaceHolder中

我剛剛創建了一個web用戶控件,它在服務器端沒有代碼,只是在aspx中設計,因爲所有的功能都是客戶端。

網絡控制

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

在另一個頁面

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

,但我看不到任何東西。那麼我需要添加什麼才能最終呈現?

回答

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事件中做同樣的事情LoadControl,以避免在主頁面中暴露控件並直接使用placeHolder.Controls.Add(新的WebControlDemo())。 –