动态添加自定义用户控件到页面

时间:2010-11-03 15:15:05

标签: c# asp.net user-controls

我有一个usercontrol(ascx),我想动态添加到页面。

控件和页面都没有命名空间(感谢糟糕的供应商)。

当我使用以下内容时,它告诉我它无法找到“类型或命名空间”

StayTunedControl = (UserControler_StayTuned)LoadControl("~/UserControler/StayTuned.ascx");           
Page.Controls.Add(StayTunedControl);
StayTunedControl.StayTunedID = Convert.ToInt32(IncludesStayTunedMeta.Value);

在对命名空间等进行一些调整之后,我现在处于上面第3行产生以下错误的位置:

'System.Web.UI.UserControl'不包含'StayTunedID'的定义

我希望将StayTunedControl转换为类型(UserControler_StayTuned)来解决这个问题。

HELP?

2 个答案:

答案 0 :(得分:0)

基本上,在控件的inherits属性中存在命名空间和残余的问题 - 这导致编译器失败,错误代码为1. message。

提及以下解决方案 - 与上述一些评论相符:

http://www.codeproject.com/KB/aspnet/LoadingUSerControl.aspx

答案 1 :(得分:0)

在访问用户控件的任何属性之前,您需要在将用户控件加载到页面时创建该实例。

Dim tc As New Page
Dim c As Control = tc .LoadControl("~/usercontrols/tasks.ascx")
Dim uc As usercontrols_tasks = DirectCast(c, usercontrols_tasks)

我首先将我的用户控件加载为通用控件。然后创建了一个新的用户控件实例,并将通用加载的控件转换为我的uc实例。

创建用户控件的实例后,其属性将可用。