2010-01-11 7 views
0

Je suis au milieu d'un projet ASP.NET où j'utilise le framework CSLA et le contrôle AJAX ModalPopupExtender. J'ai déjà utilisé CSLA et ModalPopupExtender dans différents projets, mais c'est la première fois que je les utilise ensemble. La manière dont je veux que cela fonctionne est pour l'utilisateur d'appuyer sur un bouton, ce qui va créer une instance d'un objet et montrer le popup modal. Le popup a des contrôles liés à un CslaDataSource, basé sur l'objet qui vient d'être créé. Au contraire, la façon dont cela fonctionne réellement est de charger les contrôles sur ModalPopup même lorsque le popup est encore caché, par exemple. pendant le chargement de la page initiale. Cela génère une erreur, puisque l'objet auquel les contrôles sont liés n'existe pas encore, donc il n'est pas capable de rendre correctement les contrôles et le Javascript correspondant sur la page aspx. L'erreur est: « Erreur d'exécution Microsoft JScript: Sys.ArgumentNullException: La valeur ne peut pas être null Nom du paramètre:. Élément »CSLA, ASP.NET et AJAX ModalPopupExtender - comment ne pas charger un objet lorsque le ModalPopup n'est pas visible

Ma solution actuelle est de créer un objet factice dès le départ, tellement il y a quelque chose que les contrôles sur la popup peut se lier initialement. Je remplace alors cet objet lorsque l'utilisateur appuie sur le bouton. Je me demande s'il y a un moyen plus simple avec moins de frais généraux que je pourrais manquer.

Répondre

0

Même si les contrôles sont masqués, ils sont toujours créés et continuent de passer par le cycle de vie de la page de formulaires Web. Le ModalPopup affiche simplement les contrôles déjà liés et rendus.

Je suggère d'utiliser une méthode ajax javascript (créer un objet XmlHttp - c'est très facile à faire avec jquery). Vos contrôles seront rendus et passeront par le cycle de vie de la page à ce moment-là. Votre liaison se produira avec la méthode CslaDataSource OnSelectObject.