J'essaie de mettre à niveau un projet Web asp.net C# de la version 2.0 vers la version 3.5. Lorsque je fais cela, le script côté client écrit à l'aide de RegisterStartupScript n'est pas rendu sur la page du client.RegisterStartupScript ne fonctionne pas après la mise à niveau vers la structure 3.5
Cela fonctionne parfaitement lorsque je compile pour 2.0, et pour 3.0, mais pas quand je compile pour 3.5.
Voici le code qui ne se rend:
Page myPage = (Page)HttpContext.Current.Handler;
ScriptManager.RegisterStartupScript(myPage, myPage.GetType(), "alertscript", "alert('test');", true);
Ceci est appelé à partir d'un projet de classe, et non le projet Web lui-même, ce qui est la raison pour laquelle j'utilise le HttpContext.Current.Handler .
Il n'y a aucune erreur générée par le compilateur, le CLR, et il n'y a pas d'erreurs JavaScript côté client.
Si je fais une recherche pour le "alertscript" dans ma page rendue, le code ci-dessus n'est pas là.
Quelqu'un a des idées sur ce qui se passe?
-Edit-
Cela semble être un problème quand je suis en train d'enregistrer le script d'un projet externe.
Si j'utilise exactement le même code dans un fichier de classe dans le projet web (pas le code derrière), cela fonctionne. Cependant, si je fais un appel à une méthode dans une classe d'un autre projet, cela ne fonctionne pas.
Est-ce que ScriptManager.RegisterStartupScript n'est pas enregistré correctement s'il est exécuté ailleurs que dans le projet Web lui-même?
-Edit2-
Pour ajouter à cela, j'ai fait ce qui suit:
- a enregistré un script d'alerte de mon projet web classe
- Appelé une méthode dans une classe externe et simplement enregistré un autre script d'alerte
- Enregistré un autre script d'alerte de ma classe de projet web
Après tout cela est fait, si je vois la variable: myPage.ClientScript._registeredClientStartupScripts du projet web, je vois ces trois nouvelles entrées, une pour chacun des scripts que je viens d'enregistrer. Donc, je crois que tout a été ajouté correctement. Cependant, quand je laisse la page finir de s'exécuter et que je regarde les résultats dans fiddler, je vois seulement les deux qui ont été réellement enregistrés du projet Web lui-même, et celui de la classe externe ne le fait jamais. Gardez à l'esprit que tout fonctionne parfaitement dans les frameworks 2.0 et 3.0, mais pas dans 3.5.
Excellent, je suis sûr que cela ne va jamais nous attraper à nouveau :) –