Injecter du code javascript sur chaque contrôleur de l'action asp.net mvc
Chaque fois que nous faisons un appel à une action de contrôleur par le biais d'un post complet du dos ou un appel ajax je veux vérifier le modèle de vue et selon une certaine logique injecter un peu de javascript à exécuter dans le navigateur. L'application est la plupart du temps déjà codé et ce que je suis en train de faire est d'avoir le code générique qui peut faire l'affaire. Je me demande quelle serait la meilleure façon de le faire.
Je pense à propos de l'utilisation de filtres d'actions et ensuite vérifier le modèle et ensuite injecter de la js si nécessaire. Mais vous ne savez pas comment cela fonctionne sur des événements comme action exécutée etc. Aucun exemple de code qui vous seront utiles.
L'autre option est de le faire sur le côté client. Mais là encore pas sûr de la façon appropriée de le faire de manière générique.
Pourriez-vous ajouter du code js à la MasterPage?
OriginalL'auteur user784796 | 2012-04-10
Vous devez vous connecter pour publier un commentaire.
Regarder en remplaçant la base du contrôleur de OnActionExecuted événement, qui devrait vous donner accès à la vue du modèle, après qu'elle a été traitée par l'action. Je suis curieux de savoir si, comment allez-vous injecter un extrait de code javascript dans une réponse AJAX, qui est généralement un simple objet JSON?
Si tout ce que vous êtes vraiment se poser est de savoir comment injecter du code javascript à partir du contrôleur, vous pouvez mettre ceci dans votre point de vue:
Vous pouvez ajouter le au-dessus d'un point de vue spécifique, ou une page de mise en page. Ensuite, vous pourriez faire quelque chose comme ceci:
J'ai ajouté un exemple de mon post.
Qui fonctionne. Merci À Chris. Juste quelques corrections. dans votre contrôleur de code il y a un point-virgule manquant. ViewBag.StartupScript = "alert('hello world!');"; Et la dans la vue, il devrait être @Html.Raw(@ViewBag.StartupScript) sinon le script ne fonctionnera pas.
Haha, vous êtes de droite. Honte sur moi pour ne pas tester le code en premier. Je vais mettre à jour le poste de renvoi.
Aussi, vous n'avez pas besoin de la deuxième symbole @ l'intérieur des parenthèses.
OriginalL'auteur Chris
Injecter sur la publication ainsi que les appels ajax voici comment vous pouvez le faire:
Probablement pas la solution la plus propre, mais qui fonctionne.
OriginalL'auteur user784796
filterContext.HttpContext.Réponse.Écrire(sb.ToString());
cela va remplacer la vue partielle viennent de appel Ajax, tout à pied autour?
OriginalL'auteur user3034838