Agregar un controlador

por Rick Anderson

Note

Hay disponible una versión actualizada de este tutorial que usa ASP.NET MVC 5 y Visual Studio 2013. Es más seguro, mucho más fácil de seguir y demuestra más características.

MVC representa el controlador de vista de modelos. MVC es un patrón para desarrollar aplicaciones que están bien diseñadas, comprobables y fáciles de mantener. Las aplicaciones basadas en MVC contienen:

  • M odelos: clases que representan los datos de la aplicación y que usan la lógica de validación para aplicar las reglas de negocios para esos datos.
  • V istas: archivos de plantilla que usa la aplicación para generar dinámicamente respuestas HTML.
  • C Ontroladores: clases que controlan las solicitudes entrantes del explorador, recuperan los datos del modelo y, a continuación, especifican plantillas de vista que devuelven una respuesta al explorador.

Trataremos todos estos conceptos de esta serie de tutoriales y le mostraremos cómo usarlos para compilar una aplicación.

Comencemos por crear una clase de controlador. En Explorador de soluciones, haga clic con el botón secundario en la carpeta Controllers y seleccione Agregar controlador.

Asigne al nuevo controlador el nombre "HelloWorldController". Deje la plantilla predeterminada como controlador MVC vacío y haga clic en Agregar.

Agregar controlador

Observe en Explorador de soluciones que se ha creado un nuevo archivo llamado HelloWorldController.CS. El archivo está abierto en el IDE.

Reemplace el contenido del archivo por el código siguiente.

using System.Web;
using System.Web.Mvc; 
 
namespace MvcMovie.Controllers 
{ 
    public class HelloWorldController : Controller 
    { 
        // 
        // GET: /HelloWorld/ 
 
        public string Index() 
        { 
            return "This is my <b>default</b> action..."; 
        } 
 
        // 
        // GET: /HelloWorld/Welcome/ 
 
        public string Welcome() 
        { 
            return "This is the Welcome action method..."; 
        } 
    } 
}

Los métodos de controlador devolverán una cadena de HTML como ejemplo. El controlador se denomina HelloWorldController y el primer método anterior se denomina Index. Vamos a invocarlo desde un explorador. Ejecute la aplicación (presione F5 o Ctrl + F5). En el explorador, anexe "HelloWorld" a la ruta de acceso en la barra de direcciones. (Por ejemplo, en la ilustración siguiente, es http://localhost:1234/HelloWorld.) La página en el explorador tendrá un aspecto similar al de la captura de pantalla siguiente. En el método anterior, el código devolvió una cadena directamente. Ha indicado al sistema que solo devuelva algún código HTML y lo hizo.

ASP.NET MVC invoca diferentes clases de controlador (y métodos de acción diferentes) en función de la dirección URL de entrada. La lógica de enrutamiento de direcciones URL predeterminada usada por ASP.NET MVC usa un formato como este para determinar qué código debe invocar:

/[Controller]/[ActionName]/[Parameters]

La primera parte de la dirección URL determina la clase de controlador que se va a ejecutar. Por lo tanto, /HelloWorld se asigna a la clase HelloWorldController. La segunda parte de la dirección URL determina el método de acción de la clase que se va a ejecutar. Por lo tanto, /HelloWorld/index haría que se ejecutara el método Index de la clase HelloWorldController. Tenga en cuenta que solo tuvimos que ir a /HelloWorld y el método de Index se usó de forma predeterminada. Esto se debe a que un método denominado Index es el método predeterminado al que se llamará en un controlador si no se especifica uno explícitamente.

Vaya a http://localhost:xxxx/HelloWorld/Welcome. El método Welcome se ejecuta y devuelve la cadena "este es el método de acción de bienvenida...". La asignación MVC predeterminada es /[Controller]/[ActionName]/[Parameters]. Para esta dirección URL, el controlador es HelloWorld y Welcome es el método de acción. Todavía no ha usado el elemento [Parameters] de la dirección URL.

Vamos a modificar ligeramente el ejemplo para que pueda pasar parte de la información de parámetros de la dirección URL al controlador (por ejemplo, /HelloWorld/Welcome? Name = Scott&numtimes = 4). Cambie el método de Welcome para que incluya dos parámetros, como se muestra a continuación. Tenga en cuenta que el código C# usa la característica opcional-Parameter para indicar que el parámetro numTimes debe tener como valor predeterminado 1 si no se pasa ningún valor para ese parámetro.

public string Welcome(string name, int numTimes = 1) {
     return HttpUtility.HtmlEncode("Hello " + name + ", NumTimes is: " + numTimes);
}

Ejecute la aplicación y vaya a la dirección URL del ejemplo (http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4). Puede probar distintos valores para name y numtimes en la dirección URL. El sistema de enlace de modelos de ASP.NET MVC asigna automáticamente los parámetros con nombre de la cadena de consulta de la barra de direcciones a los parámetros del método.

En ambos ejemplos, el controlador ha estado realizando el "VC" parte de MVC, es decir, la vista y el controlador funcionan. El controlador devuelve HTML directamente. Normalmente, no desea que los controladores devuelvan HTML directamente, ya que es muy engorroso para el código. En su lugar, usaremos normalmente un archivo de plantilla de vista independiente para ayudar a generar la respuesta HTML. Vamos a ver cómo podemos hacerlo.