Pregunta

En mi aplicación web ASP.NET MVC 2, utilizo RenderAction para mostrar HTML en lo que llamo la zona "mensaje flash" del sitio web. Por área flash, me refiero a un área resaltada cerca de la parte superior que contiene un mensaje acerca de la solicitud anterior, como Hello <%: Html.DisplayTextFor(m => m.Username) %> cuando el usuario inicia sesión en.

Un mensaje flash que estoy trabajando es un poco más complejo. Se necesita añadir un bloque de código Javascript para la respuesta, pero quiero colocar el elemento script antes de la etiqueta final </body> como se recomienda en el libro Alto Rendimiento JavaScript .

En una vista normal, yo uso <asp:Content ContentPlaceHolderID="FlashScriptElements" runat="server"><script> ... </script></asp:Content> a elementos lugar script en la parte inferior de la página. Por desgracia, si intento lo mismo en una vista parcial que se representa con RenderAction, me sale el error del analizador "Los controles de contenido tienen que ser los controles de nivel superior en una página de contenido o una página maestra anidada que hace referencia a una página maestra".

¿Hay algo así como <asp:Content> que puedo usar en las vistas parciales que se inserte el contenido en el lugar correspondiente de la página maestra?

¿Fue útil?

Solución

<asp:Content> no es compatible con RenderAction porque RenderAction es equivalente a tener código que ejecutar su método de acción del niño, se reunieron la respuesta, y después se pegó a la vista del método de matriz.

Lo que podría hacer es añadir los scripts que se necesita en algún lugar a la colección HttpContextBase.Items. Luego, en su página maestra justo antes del final del documento recuperar los guiones registrados e imprimirlos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top