为什么ASP.Net不能识别我的用户控件?

时间:2010-08-01 16:42:18

标签: .net asp.net

在我目前的项目(ASP.Net 2.0)中,我有很多Web用户控件,其中包括“Office.ascx”。

使用以下行将Office.ascx加载到另一个控件中:

guide_controls_display_Office o = (guide_controls_display_Office)LoadControl("Office.ascx");

我加载它的控件使用以下行注册了Office.ascx:

<%@ Register TagName="office" TagPrefix="uc" Src="Office.ascx" %>

但是我在启动网页时遇到了这个错误:

Unable to cast object of type 'ASP.guide_controls_display_office_ascx' to type 'guide_controls_display_Office'.

为什么我会收到此消息?我可以看到第一种类型有“ASP”。在它面前。这是正常的吗?

1 个答案:

答案 0 :(得分:1)

这似乎是一个已知问题。我不得不清除临时文件并重建项目以使错误消息消失,“暂时”。

Unable to cast object of type 'X' to type 'X' - ASP.NET

最终解决方案似乎是接口。使用您需要的方法构建接口或抽象类,使用户控件实现接口,然后使用接口/抽象类加载控件:

Control c = LoadControl("~/guide/controls/display/Office.ascx");
AOffice io = c as AOffice;
io.ID = "office_" + i.ToString();
offices.Controls.Add(io);

io.DisplayEdit = displayedit;