在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则定义了您的程序所要载入用户控件的虚拟路径。