Référence Null aléatoire au Runtime après un LoadControl

funkytoof Messages postés 3 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 25 juillet 2007 - 25 juil. 2007 à 09:22
funkytoof Messages postés 3 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 25 juillet 2007 - 25 juil. 2007 à 11:07
FunkyToof

2 réponses

funkytoof Messages postés 3 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 25 juillet 2007
25 juil. 2007 à 09:25
Bonjour,


je développe un site web en .net2/C#.


J'ai un problème bloquant et j'aimerai arriver à en comprendre l'origine. C'est un problème qui a lieu au Runtime.
Le code est le suivant:


protected void Page_Load(object sender, EventArgs e)
{ ...
Control tempControl = (Control)Page.LoadControl("~/EditoContent.ascx");
EditoContent myUC = new EditoContent();
myUC = tempControl as EditoContent;
PlaceHolder_for_EditoContent.Controls.Add(myUC); //Ici parfois myUC == Null, parfois pas ???
...}


Or, de façon "aléatoire", lors de l'ajout du control au Placeholder, j'ai une erreur (ou parfois pas) au runtime me disant que myUC a une référence Null. Quelqu'un a-t-il une idée de ce qu'il se passe au Runtime qui justifierai ce comportement ?


Merci d'avance pour votre aide,




FunkyToof
0
funkytoof Messages postés 3 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 25 juillet 2007
25 juil. 2007 à 11:07
Rebonjour,

j'ajoute qqs infos, comportements observés, relativement au problème soulevé, notamment un plantage sous VS2005. L'exemple présenté ici est le cas d'un UserControl appelé UC_Titre contenant lui même des UserControl UC_Paragraphe.

Dans UC_Titre.ascx, j'enregistre le comosant UC_Paragraphe:
...
<%@RegisterSrc="UC_Paragraphe.ascx"TagName="UC_Paragraphe"TagPrefix="uc1" %>
...



Dans le code behind UC_Titre.ascx.cs, je cherche à charger le UserControl UC_Paragraphe:
...
Control mytempUC_Paragraphe = (Control)Page.LoadControl("~/UC_Paragraphe.ascx");
UC_Paragraphe myUC_Paragraphe = mytempUC_Paragraphe as UC_Paragraphe;
myUC_Paragraphe.ID = ((string[])(myBloc.Paragraphes[i]))[1];
PlaceHolder1.Controls.Add(myUC_Paragraphe);

...

A l'exécution, j'ai l'erreur "La référence d'objet n'est pas définie à une instance d'un objet." lorsque je tente d'assigner une valeur à myUC_Paragraphe.ID (ligne 3), ce qui rejoint le problème expliqué dans le premier message. Ce qui m'interroge, c'est que, comme le montre le code couleur, le composant UC_Paragraphe n'a pas l'air d'être reconnu comme type objet (pas coloré en vert par VS2005). Si je ferme mon projet et que je le réouvre la coloration peut ou pas être bonne, ça dépend de la couleur du ciel . Bref, je me dis que si VS2005 a du mal à s'y retrouver, peut-être est-ce pour la même raison que le compilo au runtime, ce qui pourrait exliquer l'échec du Cast et la reférence Null assignée à myUC_Paragraphe.

Si c'est le cas, je me demande où j'ai merdouillé dans mes déclarations, s'il ya une meilleure façon de faire qui supprimerai ce comportement aléatoire d'un coup ça marche, un coup ça marche pas !!!

Si vous avez des idées, n'hésitez pas,

Merci d'avance

FunkyToof
0
Rejoignez-nous