如何在ASP.NET中添加用户控件的运行时间?

时间:2012-01-30 19:10:34

标签: c# asp.net user-controls

如何在ASP.NET中动态添加用户控件?

我有一个ID="contentData"的div和几个控件

  • one.ascx
  • two.ascx
  • three.ascx

现在我已经创建了一个页面default.aspx,它可以通过以下方式之一获取查询字符串中的参数:

default.aspx?val=one  
default.aspx?val=two  
default.aspx?val=three

我从

获取价值
Request.QueryString["val"]

现在如何在此加载特定控件?

<div ID="controlData"></div>

4 个答案:

答案 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,并添加项目它的“控制”财产。但是如果可能的话我会避免这种情况,因为它很难维护:未来的程序员甚至不知道屏幕上可能有什么控件。