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

C# 如何在ASP.NET中添加运行时用户控件?,c#,asp.net,user-controls,C#,Asp.net,User Controls,如何在ASP.NET中动态加载页面时添加用户控件 我有一个带有ID=“contentData”的div和几个控件 1.ascx 2.ascx 3.ascx 现在,我已经创建了一个页面default.aspx,它可以通过以下方式之一获取查询字符串中的参数: default.aspx?val=1 默认值。aspx?val=2 默认值。aspx?val=3 我从中获取价值 Request.QueryString["val"] 现在,我如何在这种情况下加载特定控件 <div ID="con

如何在ASP.NET中动态加载页面时添加用户控件

我有一个带有
ID=“contentData”
的div和几个控件

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

default.aspx?val=1
默认值。aspx?val=2
默认值。aspx?val=3
我从中获取价值

Request.QueryString["val"]
现在,我如何在这种情况下加载特定控件

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

使用页面的LoadControl方法以编程方式执行此操作:


另外,如果您打算将其添加到div中,请确保通过在标记中添加runat=“server”使该div成为服务器控件,我不太清楚您在问什么,因此如果这没有回答问题,请原谅

假设可能的值是预先知道的,并且这个数字是适度的——就像您的示例中的三个一样——最简单的方法是将表单上的所有控件都包含在“visible=false”中,然后在Load方法中将所需控件的visible设置为true

如果可能性的数量非常大,或者是动态的,以至于您在编码时甚至不知道可能性是什么,那么您可以放入包装器对象,比如div,并将这些项添加到其“controls”属性中。但如果可能的话,我会尽量避免这样做,因为这将很难维护:未来的程序员甚至不知道屏幕上可能有哪些控件。

在您的aspx中

<div id="div1" runat="server">

</div>
您需要做的就是通过添加runat=“server”来绑定您的div服务器,并在codebehind中使用Page.LoadControl获取您的usercontrol,然后使用div的控件将其添加到您的div中。添加

// Load the User Control

Control uc = LoadControl("~/MyUserControl.ascx");

// Add the User Control to the Controls collection

Page.Controls.Add(uc);
有关更多详细信息,请访问此链接-

还请阅读.net中~tidle的用法

。。。或者使用,本质上与带有
runat=server
的div相同。也可以使用面板替换该div,以便更容易地映射到服务器上的实例(在某些情况下,当runat=server添加到html元素时,VS不会自动生成成员)。根据查询中的值构建到ascx的路径。验证或封装在try-catch中;处理不存在的问题。对于通用控件放置,通过以“~”字符开始构建路径(例如“~/controls/”+this.Request.QueryString[“val”]+.ascx”)-但是,再次验证查询中的值。我第二次验证查询中的值。在阅读了这些答案和一些文章后,我现在可以做得更好了,Page_Init()是我必须在其中应用代码的函数,但我是否需要在其中编写代码!Page.IsPostBack?如果是,为什么这个函数是用户?没有数据是动态的,将从数据库加载,所以我负担不起加载和可见错误。。。
// Load the User Control

Control uc = LoadControl("~/MyUserControl.ascx");

// Add the User Control to the Controls collection

Page.Controls.Add(uc);