总结
是否可以在不使用 <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>
方法不是必需的。
最佳答案
我相信你可以做这样的事情(请原谅 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
关于c# - 标记中的服务器控件,但没有创建实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23106849/