2010-08-01 12 views
2

Dans mon projet actuel (ASP.Net 2.0), j'ai beaucoup de contrôles utilisateur Web, parmi eux "Office.ascx".Pourquoi ASP.Net ne reconnaît-il pas mon contrôle utilisateur?

Office.ascx est chargé dans un autre contrôle en utilisant cette ligne:

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

Le contrôle que je suis le chargement dans Office.ascx a enregistré à l'aide de cette ligne:

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

Mais je reçois ce Erreur lors du lancement de la page Web:

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

Pourquoi est-ce que je reçois ce message? Je peux voir que le premier type a "ASP". devant lui. Est-ce normal?

Répondre

1

Il semble que ce soit un problème connu. J'ai dû effacer les fichiers temporaires et reconstruire le projet pour faire disparaître le message d'erreur, "pour un moment".

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

La solution finale semble être des interfaces. Construire une interface ou une classe abstraite avec les méthodes dont vous avez besoin, faire mettre en œuvre votre contrôle utilisateur l'interface, puis charger le contrôle à l'aide de l'interface/classe abstraite:

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; 
+0

+1 pour la solution la publication dans ce – citronas

+0

Mais est-il une soulution permanente à ce problème très ennuyeux? –

+0

Il y a. J'ai mis à jour la réponse. –

Questions connexes