2009-06-10 6 views
0

Je reçois l'erreur suivante alors que je soumets un formulaire après l'avoir ajouté une liste déroulante dans mon concepteurErreur lors de l'ajout d'un menu déroulant sur le site

System.NullReferenceException: référence d'objet non définie à une instance d'un objet. à WebApplication1._Default.collectEmailBodyText() dans C: \ v1.5_production_05June09 \ Default.aspx.vb: ligne 219

Ci-dessous, les deux lignes supplémentaires que i ajoutée dans collectEmailBodyText()

tempPanelDropDownBox = DirectCast(form1.FindControl(("txt_" & panelUsed & "_ddinput") + counter.ToString()), DropDownList) 

tempCollector = tempCollector + ":" + tempPanelDropDownBox.SelectedItem.Text

Répondre

2

Comme les autres affiches ont dit, il semble probable que l'appel à la méthode FindControl retourne Nothing (null), donc puis essayer d'accéder à une propriété comme SelectedItem provoquera la NullReferenceException.

Votre code FindControl("txt_" & panelUsed & "_ddinput") + counter.ToString()) essaie de trouver une liste déroulante avec un ID serveur de certaines chaînes concaténées ensemble, puis ce qui ressemble à un nombre variable à la fin. Cela semble un peu étrange; voulez-vous vraiment le numéro à la fin? Je m'attendrais à quelque chose comme ça lors de l'utilisation de contrôles ajoutés dynamiquement.

2

Je suppose que le problème le plus probable est que form1.FindControl ne trouve pas le contrôle. Je recommanderais d'effectuer d'abord le contrôle de recherche, puis de vérifier qu'il n'est pas nul avant d'essayer d'accéder à des valeurs de celui-ci.

2

Comme l'indique l'exception, l'un des objets a une valeur nulle. Le plus simple est de définir un point d'arrêt sur la ligne sur laquelle vous obtenez l'exception et d'utiliser quelque chose comme QuickWatch pour évaluer les différentes sections de la ligne pour savoir laquelle retourne null.

Le plus évident est le FindControl retournant null.

Questions connexes