标记中的服务器控制,但不创建实例

时间:2014-04-16 10:30:21

标签: c# asp.net vb.net user-controls

摘要

是否可以让服务器端控件在页面加载时不创建控件实例,而不使用<asp:PlaceHolder>

编辑,尽管示例代码在C#中,我已经添加了VB.NET作为标记,因为我认为这是一个特定于ASP.NET的问题,而不仅仅是C# < / p>

详情

在.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>方法。

1 个答案:

答案 0 :(得分: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