lunes, 27 de enero de 2014

Personalizar plantillas MVC que usa Visual Studio

A día de hoy Visual Studio incorpora plantillas que facilitan bastante el trabajo a la hora de generar controladores y vistas en un proyecto MVC. Estas plantillas en algunos casos permiten asociar un modelo y generan código a partir de los atributos de dicho modelo (scaffolding). Por ejemplo al crear un nuevo controlador, el asistente de Visual Studio nos deja seleccionar diferentes tipos.

Customizar plantillas MVC Visual Studio


El archivo que se genera ya incorpora los métodos para las acciones de listar, editar, crear y eliminar elementos. Por defecto crea los métodos con la firma pero sin implementar.

    public class AreaTICController : Controller
    {
        //
        // GET: /AreaTIC/
        public ActionResult Index()
        {
            return View();
        }

        //
        // GET: /AreaTIC/Details/5
        public ActionResult Details(int id)
        {
            return View();
        }

        //
        // GET: /AreaTIC/Create
        public ActionResult Create()
        {
            return View();
        }

     [...]
Editar estas plantillas puede sernos muy útil para unificar criterios de desarrollo entre el equipo y evitar tener que picar código cada vez que creamos un nuevo apartado. Se podría llegar a crear un controlador que ya incorpore código para el control de errores, paginación de las listas, acceso a datos, etc... Ídem con las plantillas de vistas, puede sernos muy útil personalizarlas.

A continuación veremos como editar estas plantillas para nuestro proyecto.

1) Crearemos dentro del proyecto MVC una carpeta CodeTemplates.

2) Buscamos las plantillas al directorio donde está instalado Visual Studio en la máquina. Lo más sencillo para localizar la plantilla que necesitamos es fijarnos en el identificador para el tipo de plantilla al crear el elemento con el asistente de Visual Studio. Por ejemplo para el controlador que he añadido en el ejemplo el identificador es MVCControllerWithActions (sin el Scaffolder).

Customizar plantillas MVC Visual Studio


3) Copiamos la carpeta entera en CodeTemplates que hemos creado en el primer paso. Si nos fijamos en el contenido de la carpeta hay 2 archivos con extensión ".t4". Uno contiene código c# y el otro vb. En mi caso, una vez copiada la carpeta a CodeTemplates elimino el .vb y me quedo con el .cs dentro de mi proyecto.

4) Editamos el archivo controller.cs.t4 añadiendo un parámetro string page al método Index().
namespace <#= Namespace #>
{
    public class <#= ControllerName #> : Controller
    {
        //
        // GET: <#= (!String.IsNullOrEmpty(AreaName)) ? ("/" + AreaName) : String.Empty #>/<#= ControllerRootName #>/
        public ActionResult Index(string page)
        {
            return View();
        }

   [...]
Con esto ya tendríamos la plantilla editada, Visual Studio antes de buscar en el directorio donde están instaladas las plantillas en la máquina comprobará si hay una carpeta CodeTemplates en el proyecto. En caso que tengamos allí una plantilla para el tipo de archivo que hemos seleccionado, cogerá la plantilla del proyecto en vez de la del directorio de Visual Studio.

Hasta aquí el artículo de hoy. Como siempre animaros a participar, abrir debates, dudas, etc... Recordar que podéis seguir areaTIC en las redes sociales. Hasta la próxima!!

No hay comentarios:

Publicar un comentario