Est-il possible d'utiliser quelque chose comme dans les vues partielles qui sont rendus avec RenderAction?

StackOverflow https://stackoverflow.com/questions/4742255

Question

Dans mon application Web ASP.NET MVC 2, j'utilise RenderAction pour afficher HTML dans ce que j'appelle la zone "message flash" du site Web. Par zone flash, je veux dire une zone en surbrillance dans la partie supérieure qui contient un message sur la demande précédente, comme Hello <%: Html.DisplayTextFor(m => m.Username) %> lorsque l'utilisateur se connecte à.

Un message flash que je travaille est un peu plus complexe. Il a besoin d'ajouter un bloc de code Javascript pour la réponse, mais je veux placer l'élément script avant la balise de fin </body> comme recommandé dans le livre JavaScript haute performance .

Dans une vue normale, j'utilise <asp:Content ContentPlaceHolderID="FlashScriptElements" runat="server"><script> ... </script></asp:Content> placer les éléments script au bas de la page. Malheureusement, si je tente la même chose dans une vue partielle qui est rendu avec RenderAction, je reçois l'erreur Parser « Les contrôles de contenu doivent être des contrôles de niveau supérieur dans une page de contenu ou une page maître imbriquée qui fait référence à une page maître ».

Y at-il quelque chose comme <asp:Content> que je peux utiliser dans une vue partielle qui insérera le contenu dans l'endroit correspondant de la page principale?

Était-ce utile?

La solution

<asp:Content> n'est pas pris en charge avec RenderAction parce RenderAction est équivalent au code ayant qui exécuter votre méthode d'action des enfants, a réuni la réponse, puis coller dans la vue de la méthode mère.

Ce que vous pouvez faire est d'ajouter les scripts que vous avez besoin quelque part dans la collection de HttpContextBase.Items. Ensuite, dans votre droit de la page principale avant la fin du document récupérer les scripts enregistrés et les imprimer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top