lunes, septiembre 07, 2009

Includes en ASP.NET MVC

De pronto me surgió la necesidad de usar INCLUDES en el sitio que estoy creando en ASP.NET y MVC. Como siempre fui a Google pero esta vez no encontré ninguna respuesta satisfactoria (alguno recomendó hacer un Html helper para leer el contenido de un archivo).

Alguien podría preguntar cual es la necesidad de usar Includes teniendo tantas otras alternativas. En mi caso, tengo un proceso que genera HTMLs estáticos y necesito mostrarlos en una "caja" en el sitio.

Luego de algunas pruebas, estas son las mejores formas, según mi criterio, de usar Includes en ASP.NET y MVC.

Los includes tradicionales siguen funcionando

En principio los Includes tradicionales de ASP siguen funcionando, de modo que podemos usar:
<!--#include virtual="/includes/pagina.htm"-->
para incluír un html a partir del root. También podemos usar
<!--#include virtual="../includes/pagina.htm"-->
para incluir un html en forma relativa a donde "estamos parados".

Esto funciona incluso si el TAG Include se encuentra dentro de un Partial View. El inconveniente es el de siempre: no podemos usar variables para definir cual archivos queremos incluir. Es decir, no podemos hacer esto:
<!--#include virtual="../includes/<%= nombreArchivo %>"-->
ya que el TAG include se interpretará antes que ASP.NET (aún con MVC donde todo pasa por ASP.NET).

Includes dinámicos

La forma que encontré para lograr "Includes dinámicos" es usar la sentencia
Html.RenderPartial("PartialView")
La única restricción es que el archivo debe tener extensión .ascx (o aspx) pero no necesita la cabecera que lo define como Partial View si guardamos el archivo en la carpeta /Views/Shared. Es decir, podemos tomar una HTML, le cambiamos la extensión y lo incluimos con Html.RenderPartial.

En mi caso, el proceso que genera el HTML, ahora lo graba a disco con la extensión .ascx

2 comentarios:

Gustavo Roberto dijo...

hey amigo muy bueno sobre algoritmo y mira sabes sobre asp.net no encuentro manuales para poder aprender quisiera saber si tu podrias mandarme manuales de asp.net parap poder aprender como hacer una simple web cualquier cosa sencilla si no es ucho pedir gracias

Damián Bacalov dijo...

Gustavo,

Si ya sabés de programación orientada a objetos, entonces todo lo que necesitas lo podés obtener en:

http://www.asp.net/

Si no sabés de OOP, entonces te puedo recomendar un libro que, si bien es viejo, tiene los conceptos muy claros.