如何在ASP.NET中动态添加用户控件?
我有一个ID="contentData"
的div和几个控件
现在我已经创建了一个页面default.aspx
,它可以通过以下方式之一获取查询字符串中的参数:
default.aspx?val=one
default.aspx?val=two
default.aspx?val=three
我从
获取价值Request.QueryString["val"]
现在如何在此加载特定控件?
<div ID="controlData"></div>
答案 0 :(得分:15)
在你的aspx中
<div id="div1" runat="server">
</div>
在Page_Load
中 UserControl uc = (UserControl)Page.LoadControl("test.ascx");
div1.Controls.Add(uc);
您需要做的就是通过添加runat =“server”来绑定div服务器,并在代码隐藏中使用Page.LoadControl来取出用户控件,然后使用div的Controls.Add将其添加到div中
答案 1 :(得分:3)
// Load the User Control
Control uc = LoadControl("~/MyUserControl.ascx");
// Add the User Control to the Controls collection
Page.Controls.Add(uc);
有关详细信息,请访问此链接 - An Extensive Examination of User Controls http://msdn.microsoft.com/en-us/library/ms972975.aspx
另请阅读.net中使用~tidle http://msdn.microsoft.com/en-us/library/system.web.virtualpathutility.aspx
答案 2 :(得分:1)
使用Page的LoadControl方法以编程方式执行此操作:
http://msdn.microsoft.com/en-us/library/t9ecy7tf.aspx
另外,如果您打算将其添加到div中,请确保通过在标记中添加runat =“server”使该div成为服务器控件
答案 3 :(得分:0)
我有点不清楚你在问什么,所以请原谅我,如果这不能回答这个问题。
假设事先已知可能的值并且数量适中 - 就像示例中的三个一样 - 最简单的方法是在表单上包含“visible = false”的所有控件,然后在您的Load方法在您想要的那个上设置为true。
如果可能性的数量非常大,或者它是动态的,以至于您甚至不知道编码时的可能性是什么,那么您可以放入一个包装器对象,例如div,并添加项目它的“控制”财产。但是如果可能的话我会避免这种情况,因为它很难维护:未来的程序员甚至不知道屏幕上可能有什么控件。