2009-02-18 7 views
0

J'ai un parentUserControl qui charge un childUserControl. Plusieurs instances (disons 3) de parentUserControl sont ajoutées à la page hôte.RegisterStartupScript et plusieurs contrôles

Sur PageLoad du parentUserControl, je me inscrire JS:

ScriptManager.RegisterStartupScript(this, typeof(Page), keyJSLoadBegin, "OnParentLoad();", true); 

Sur PageLoad de hte childUserControl, je me inscrire JS:

ScriptManager.RegisterStartupScript(this, typeof(Page), keyJSLoadBegin, "OnChildLoad();", true); 

je reçois une erreur JS lorsque je navigue à la page. La ligne qui provoque cette erreur est (dans View Source):

`OnParentLoad('parentA');OnChildLoad('childA');OnParentLoad('parentB'); 
OnParentLoad('parentC')`;OnChildLoad('childC');OnChildLoad('childB') 

Clairement, les appels sont hors service.

Quelqu'un sait pourquoi?

EDIT:

Le problème semble être lié au bug ici: http://support.microsoft.com/kb/817032

La suggestion est d'enregistrer tous les scripts liés à la fois. Ceci est impossible dans ma situation car les scripts sont dans des contrôles utilisateur différents.

Est-ce que quelqu'un a trouvé une solution à ce problème?

Répondre

0

Le modèle de contrôle dans ASP.NET prévoit que votre code soit entièrement encapsulé. Chaque commande devrait fonctionner indépendamment des autres et ne pas dépendre de l'ordre de chargement (idéalement même pas dépendre de la présence). Vous devriez repenser votre approche.

0

Je ne comprends pas pourquoi cela arrive, mais voici mon avis:

Je pense que vous devriez exposer les scripts de contrôle des enfants par une méthode. Dans le contrôle parent les concaténer dans l'ordre que vous voulez, puis enregistrez votre page à un endroit.

Questions connexes