2010-06-21 5 views
1

Je suis relativement nouveau dans le modèle de framework .NET, donc toute aide/suggestion serait très appréciée. Fondamentalement, je veux appeler un contrôle utilisateur à partir d'une page maître. Cependant, j'ai besoin de passer un objet (une liste d'objets pour être plus spécifique), au contrôle de l'utilisateur. Je génère la liste des objets dans le Page_Load de la page maître. Voici la ligne dans ma page maître qui appelle le contrôle de l'utilisateur.Transmettez les paramètres au contrôle utilisateur sur Page_Load

<cu:Eventlisting1 runat="server" id="eventListing1"></cu:Eventlisting1> 

Ce contrôle utilisateur a un paramètre appelé CalendarItems qui accepte la liste des éléments. Toutefois, si j'essaie de définir cela à l'intérieur de la méthode Page_Load, mon contrôle s'exécute avant le Page_Load et déclenche une exception indiquant que CalendarItems est null. Y at-il un moyen de contourner cela?

EDIT:
Pour essayer d'aider à clarifier. J'ai une liste déroulante sur cette page qui détermine la liste des éléments CalendarItems lorsque je remplis la liste CalendarItems dont j'ai besoin pour lire la valeur sélectionnée dans la liste déroulante.

Répondre

2

Vous pouvez appeler une fonction initControl (le code qui provoque l'exception maintenant) à partir de setCalendarItems. Je préférerais normalement que ce soit abuser du cycle de vie de la page (utilisez Page.Init) car cela pourrait causer d'autres problèmes (viewstate etc.). Définir une fonction initControl dans votre usercontrol et l'appeler depuis le contrôleur (Page ou Masterpage) après avoir défini les CalendarItems serait probablement le meilleur, car vous gardez autant de contrôle que possible (mieux que d'appeler initControl de la propriété).

1

Essayez de remplir votre liste dans la méthode Init de la page, votre contrôle sera chargé et il se produit avant l'événement de chargement de la page.

+0

Vous pouvez également définir la liste dans une nouvelle liste vide lorsque le contrôle est créé pour éviter l'exception, puis le remplir comme vous l'êtes maintenant. Il faudrait probablement un appel de méthode supplémentaire pour reconstruire votre calendrier en fonction de l'apparence de votre code. – jaltiere

Questions connexes