aprendiendo-net-mvc4Saludos !! En el articulo de hoy es sobre el desarrollo de Controladores en ASP.NET MVC 4. En el articulo anterior se estudio el caso de las rutas dinámicas en Framework, si ya conoces del tema no importe pero si eres principiante te recomiendo que le eches una mirada ;).

Como dije en el comienzo el tema de hoy es la creación de Controladores, el Controlador es simplemente una clase si solo una clase, no es mas. El nombre de la clases debe tener la siguiente forma <nombre_controlador>Controller, no es mas.Si recuerdan el segundo articulo, donde definimos el proyecto caso de estudio y la generación de la base de datos, pues hoy voy a crear el primer controlador para software How You Seen Me?. También les explicare las diferentes forma de usar la clase ActionResult, a través de un sencillo ejemplo.

aprendiendo-asp-net-mvc-4-parte-3-controladores

Img 1 – Crear un Controlador

Voy a definir el controlador PetController, para crear una controlador se deben situar sobre el explorador del proyecto y buscar la carpeta Controllers, hacer click derecho y después agregar controlador (Vet Img 1). Se nos presenta un formulario para escribir el nombre de la nueva clase, del nuevo Controlador, escribir PetController y Agregar (Ver Img 2).

aprendiendo-asp-net-mvc-4-parte-3-controladores

Img 2 – Definir nombre del Controlador

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace HaveYouSeenMe.Controllers
{
    public class PetController : Controller
    {
        //
        // GET: /PetTmp/

        public ActionResult Index()
        {
            return View();
        }
    }
}

Esta es la definicion de la clase generada por ASP.NET MVC, es muy sencilla en la Linea 7 se menciona el Nombre de Espacio o como se le dice en Java, el paquete. En la Linea 9 se define una clase publica con el nombre PetController que hereda de la clase Controller y por ultimo el framework genera en la Linea 14 la acción Index() que retorna un objeto ActionResult.

Nota: Los métodos o funciones en las clases controladores se le llaman acciones y deben retornar un objeto de tipo ActionResult.

Ya con esta previa aclaración, voy a mencionar los diferentes tipos de ActionResult que puede usar un proyecto ASP.NET MVC; cabe aclarar que las clases que voy a mencionar a continuación derivan o heredan de la clase ActionResult:

  • ViewResult: Usada para retornar un vista HTML, es la clase mas utilizada en un proyecto de este tipo.
  • PartialViewResult: Es similar a la case ViewResult, pero esta retorna un resultado de forma parcial.
  • ContentResult: Sirve para retornar cualquier tipo de contenido. ES muy usado para retornar archivo de formato plano como XML (text/xml) .
  • EmptyResult: Es el equivalente a los metodos sin retorno (void).
  • FileResult: Usado para retornar un contenido binario (pdf, xls, ese … etc).
  • HttpUnauthorizedResult: Usado para redireccionar a usuarios que no tiene permiso suficientes para ejecutar la acción.
  • JavaScriptResult: Usado para retornar contenido JavaScript.
  • JsonResult: Usado para retornar contenido con el formato JSON.
  • RedirectResult: Sirve para redireccionar a otra URL (código 302 y 301 de HTTP)
  • RedirectToRouteResult: Usado para redireccionar de una URL a otra.

Para terminar veamos el siguiente código, es un implementación de una acción llamada DownloadPetPicture(). Si recuerdan en la definicion del proyecto (ver Articulo) uno de los requerimientos es que los usuarios puedan ver las fotos de las mascotas perdidas, entonces esta acción se encargara de buscar la imagen de la mascota y presentarla al usuario por medio del navegador.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace HaveYouSeenMe.Controllers
{
    public class PetController : Controller
    {
        //
        // GET: /PetTmp/

        public ActionResult Index()
        {
            return View();
        }

        public FileResult DownloadPicture()
        {
            var name = (string)RouteData.Values["id"];
            var picture = "/Content/Uploads" + name + ".jpg";
            var contentType = "image/jpg";
            var fileName = name + ".jpg";
            /*DE ESTA FORM OBLIGA A GUARDAR LA IMAGEN EN EL PC*/
            /*PARA QUE LA IMAGEN SALGA EN EL NAVEGADOR, SE DEBE ELIMINAR EL TERCER PARAMETRO*/
            //return File(picture, contentType);
            return File(picture, contentType, fileName);
        }

    }
}

La definicion de la acción inicia en la Linea 19 hasta la 29, en la linea 21 se recupera el nombre de la mascota que proviene de una variable GET o POST, después se construye a ruta de la imagen en la Linea 22 , se define el tiempo de contenido en la siguiente linea y por ultimo se compone toda la ruta de la imagen. En la linea 28 se retorna un objeto de tipo File, con esta definicion obligamos a que la imagen sea descargada por el usuario; pero si eliminamos el tercer parámetro la imagen saldrá en el navegador.

Que podemos concluir de articulo de hoy, se aprendió como crear un controlador a través del asistente de Visual Studio 2012, también se describió como se estructura una Clase Controladora, se siguió con la definicion de Acción y los diferentes tipos de accionar que se puede usar en un proyecto web y por ultimo se explico la implementación de una acción FileResult. Solo espero que este articulo haya sido de utilidad nos veremos en el proximo articulo …. chao !!