2014-04-16 49 views
2

摘要服務器的控制,但沒有實例被創建

是否有可能有不創建頁面負載的控制實例的服務器端控制,而無需使用<asp:PlaceHolder>

編輯,儘管示例代碼在C#是,我已經添加VB.NET作爲一個標籤,因爲我相信這是一個問題,那就是ASP.NET具體,而不僅僅是C#

詳細

在.aspx頁面(下.NET 4.0 ASP.NET Web應用程序),我想有以下代碼...

<%if (m_myVar) {%> 
<uc1:MyControl1 runat="server" id="myCtrl1"/> 
<%}%> 

但我不希望系統來創建電子商務MyControl1如果m_myVar == false

顯而易見的解決方案是使用<asp:PlaceHolder>控制,並在代碼中創建一個實例的實例...

protected MyControl1 myCtrl1 = null; 

if (m_myVar) 
{ 
    myCtrl1 = (MyControl1)Page.LoadControl(@"~/MyControl1.ascx"); 
    myPlacehHolder.Controls.Add(myCtrl1); 
} 

我只是想知道是否有一個內置的方式來這樣做,所以<asp:PlaceHolder>方法是沒有必要的。

回答

0

我相信你可以做這樣的事情(原諒VB):

If m_myVar 
     For Each c In Page.Controls 
       If TypeOf c Is HtmlForm Then 
        Dim ctrl As New MyControl1 
        c.Controls.Add(ctrl) 
       End If 
     Next 
    End If 
+0

感謝您的建議,但它並沒有真正幫助 - 因爲它使沒有能力結構 – freefaller

+0

中定位控制是的,如果你想在沒有在page_load上創建控件的情況下,你將不得不使用佔位符。 – rickkr

相關問題