2012-04-26 10 views
7

Im construyendo una aplicación ASP.NET MVC 3 usando Razor como lenguaje de plantilla.¿Es posible modificar la salida del visor de la maquinilla de afeitar justo antes de enviarlo al cliente?

Esto es lo que me gustaría hacer: Cuando todo el contenido de la plantilla de archivos cshtml para una determinada solicitud se ha analizado en razor viewengine y listo para enviar al visitante, entonces me gustaría insertar información adicional en el contenido html analizado

Así que mi pregunta es: ¿Hay un evento de cualquier tipo para enganchar dentro del visor Razor o dentro del marco MVC que me permite hacer este tipo de cambios en la salida?

No preguntes por qué me gustaría hacer algo como esto en una aplicación MVC, es una historia larga y aburrida.

+0

¿Estás tratando de modificar el código HTML generado después de la maquinilla de afeitar se ha hecho? Si es así, ¿puedes simplemente modificar el archivo cshtml? si no se puede hacer pero no se recomienda. – Buildstarted

+0

Sé que no se recomienda pero, lamentablemente, necesito modificar el cshtml hasta el final del "ciclo". De todos modos ... ¿Tiene alguna sugerencia sobre cómo hacerlo? –

+1

Si ese es el caso, vea esta pregunta: http://stackoverflow.com/questions/8642148/how-to-intercept-view-rendering-to-add-html-js-on-all-partial-views – Buildstarted

Respuesta

0

Dada la vaguedad de su pregunta, tal vez este artículo puede ayudar, o tal vez usted puede especificar de qué manera el artículo no es útil ...

Dependency Injection in ASP.Net MVC Views

ACTUALIZACIÓN:

Cómo sobre un ActionFilter? Me parece recordar que puedes obtener el resultado de la vista y jugar con él en un ActionFilter, aunque solo he hecho esto para una transformación json. Aquí hay otro artículo: Use ASP.Net action filters to render

He aquí una SO answer--this might be a duplicate question!

+0

El problema, en la medida en que puedo ver, con ese artículo es que no expone ningún método de inyección en la salida en el punto en el ciclo de representación donde se ha renderizado todo el contenido. El método Render en el ejemplo del artículo se ejecutará para cada vista. Lo que estoy buscando es un método para hacer inyecciones de datos en la salida cuando estoy seguro de que se ha procesado todo el contenido. –

+0

Y para su caso especial, ¿desea hacer esto antes de que abandone el servidor, y no se puede hacer absolutamente en la vista en sí? – brightgarden

+0

Sí, eso es correcto. –

Cuestiones relacionadas