Welcome 微信登录

首页 / 网页编程 / ASP.NET / 在Asp.Net中动态加载控件

在Asp.Net中动态加载控件2010-08-21BilalHaidar问题:

假设您有一个Aspx页面,其包含一个名为"Add New" 的Button,而您则想让用户每次点击Button,PostBack到Server,然后创建一个用 户控件的实列,并最终想动态的添加到该页面的ControlCollections中。

之所以我说用用户控件,是因为我们很容易把许多的控件组织到一个单独的控件 中,添加的时候,我们只需把该用户控件添加到页面上就可以了。

设计 解决方法:

我所想到的解决该问题的方法是在Aspx页面上放一个 PlaceHolder容器控件,该控件可以把所有的控件动态的添加到里面。另外,我们 还设计一种"Page Controller"模式,让所有操作动态添加控件的方法 都放到一个名为BasePage基类中,也就意味着,如果我们的一些Aspx页面想动态 的添加一些控件,我们只需从这个BasePage类继承。

最后,我们也必须考 虑在一个Aspx页面上不仅仅包含一个PlaceHolder,反之,您可以把控件动态的添 加到任何的地方

最终解决方法

首先在Vs 2008创建一个 WebSite.

创建完之后,添加一个BasePage类,然后把下面的代码添加到其 中

Code

// Holds the Session Key to store the added-controls on page
private const string SESSION_CONTAINERS_KEY = "Controls_In_Container";
// Holds the path to a user control
private const string PATH_TO_CONTROL = "~/App_Controls/{0}";

该SESSION_CONTAINERS_KEY将被用做Session 的值来保存 ,而PATH_TO_CONTROL则定义了您的程序所要载入用户控件的虚拟路径。