日期:2014-05-18  浏览次数:20494 次

如何在webform的cs文件当中实例化一个usercontrol
当前定义了一个public   partial   class   ConfigureControl   :   System.Web.UI.UserControl{..........}的usercontrol

另外一个页面假设要在运行时实例化该usercontrol应该如何做..

我用了两种方法..一个是使用ASP命名空间
aspx页面当中:
ASP.configureControl   control1   =   new   ASP.configureControl   ();
//修改他的的公共属性
control1.property1   =   "test ";

Control   control   =   (Control)control1;
this.Controls.AddAt(0,   control);
该方法在开发的时候没有任何问题..可以顺利编译..但是在发布网站的时候.报错.   缺少引用ASP.configureControl   不解..

第二种方法..直接使用ConfigureControl   control1   =   new   ConfigureControl   ();
//修改他的的公共属性
control1.property1   =   "test ";

Control   control   =   (Control)control1;
this.Controls.AddAt(0,   control);

该方法在编译和发布的时候都没有问题..但是奇怪的是在访问页面的时候报错.. "Object   reference   not   set   to   an   instance   of   an   object "
说我没有实例话对象..

完全就没有折了...

我知道windowsForm下面可以直接将usercontrol实例化,并且使用form的Controls.Add方法..但是webform下面就出现了刚才的问题...
不知道各位是怎么解决这个问题..
希望能够在cs文件当中用代码的方式实例话usercontrol.

还有一个问题..关于url   rewrite的问题.
使用HttpContext.Current.RewritePath(newurl);也是.在开发的时候重写url地址没有任何问题.但是一旦部署到仅仅安装了IIS和.net   Framework2.0的机器上就会出现405没有权限的错误...


------解决方案--------------------
mark
------解决方案--------------------
ConfigureControl ctl = (ConfigureControl)Page.LoadControl( "~/Controls/ConfigureControl.ascx ");

什么假设的你的ConfigureControl.ascx文件是在根目录的Controls下。

调用的时候保证路径的正确性
------解决方案--------------------
友情UP
------解决方案--------------------
UC 无法直接实例化,请使用 Page.LoadControl 加载之

ConfigureControl ctl = Page.LoadControl( "~/ConfigureControl.ascx ") as ConfigureControl; // 假设 ConfigureControl.ascx 在根目录
------解决方案--------------------
同意楼上的

使用Page.LoadControl加载用户控件
------解决方案--------------------
又是app_code惹出来的毛病,

解决方案http://www.cnblogs.com/myzerg/archive/2007/01/05/613009.html

------解决方案--------------------
ConfigureControl ctl = (ConfigureControl)Page.LoadControl( "ConfigureControl.ascx ");

ASCX要动态添加 是不能NEW的

------解决方案--------------------
不要实例化 用 LoadControl
------解决方案--------------------
ConfigureControl ctl = (ConfigureControl)Page.LoadControl( "ConfigureControl.ascx ");

原理性错误,不要使用new