Compartir a través de


Agregar un controlador (C#)

por Rick Anderson

Nota:

Aquí hay disponible una versión actualizada de este tutorial en la que se usa ASP.NET MVC 5 y Visual Studio 2013. Es más segura, mucho más sencilla de seguir y muestra más características.

Este tutorial le enseñará los conceptos básicos de la creación de una aplicación web ASP.NET MVC mediante Microsoft Visual Web Developer 2010 Express Service Pack 1, que es una versión gratuita de Microsoft Visual Studio. Antes de empezar, asegúrese de que ha instalado los requisitos previos que se enumeran a continuación. Para instalarlos todos, haga clic en el vínculo siguiente: Instalador de plataforma web. Como alternativa, puede instalar individualmente los requisitos previos mediante los vínculos siguientes:

Si usa Visual Studio 2010 en lugar de Visual Web Developer 2010, para instalar los requisitos previos haga clic en el vínculo siguiente: Requisitos previos de Visual Studio 2010.

Un proyecto de Visual Web Developer con código fuente de C# está disponible para acompañar este tema. Descargue la versión de C#. Si prefiere Visual Basic, cambie a la versión de Visual Basic de este tutorial.

MVC significa modelo-vista-controlador. MVC es un patrón para desarrollar aplicaciones bien diseñadas y fáciles de mantener. Las aplicaciones basadas en MVC contienen lo siguiente:

  • Controladores: clases que controlan las solicitudes entrantes a la aplicación, recuperan datos del modelo y, después, especifican plantillas de vista que devuelven una respuesta al cliente.
  • Modelos: clases que representan los datos de la aplicación y que usan lógica de validación para aplicar reglas de negocios para esos datos.
  • Vistas: archivos de plantilla que usa la aplicación para generar dinámicamente respuestas HTML.

Todos estos conceptos se describirán en esta serie de tutoriales y se mostrará cómo usarlos para compilar una aplicación.

Para empezar creará una clase de controlador. En el Explorador de soluciones, haga clic con el botón derecho en la carpeta Controllers y, después, seleccione Agregar controlador.

Screenshot that shows the Solution Explorer window. Add is selected in the Controller right click menu. Controller is selected in the sub menu.

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

AddHelloWorldController

Observe que en el Explorador de soluciones se ha creado un archivo denominado HelloWorldController.cs. El archivo está abierto en el IDE.

Screenshot that shows the Hello World Controller dot c s tab and Solution Explorer window. Hello World Controller dot c s is selected in the Controllers folder.

Dentro del bloque public class HelloWorldController, cree dos métodos similares al código siguiente. El controlador devolverá una cadena HTML como ejemplo.

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..."; 
        } 
    } 
}

El controlador se denomina HelloWorldController y el primer método anterior se denomina Index. Ahora se invocará 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:43246/HelloWorld.) La página del explorador tendrá un aspecto similar a la captura de pantalla siguiente. En el método anterior, el código ha devuelto una cadena directamente. Le ha indicado al sistema que solo devolviera código HTML y lo ha hecho.

Screenshot that shows the browser. This is my default action is the text in the window.

ASP.NET MVC invoca diferentes clases de controlador (y métodos de acción diferentes dentro de ellas) en función de la dirección URL entrante. La lógica de asignación predeterminada que usa ASP.NET MVC utiliza un formato similar al siguiente para determinar qué código se debe invocar:

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

La primera parte de la dirección URL determina la clase de controlador que se va a ejecutar. Por tanto, /HelloWorld se asigna a la clase HelloWorldController. La segunda parte de la dirección URL determina el método de acción en la clase que se va a ejecutar. Por tanto, /HelloWorld/Index hará que se ejecute el método Index de la clase HelloWorldController. Observe que solo ha tenido que navegar a /HelloWorld y que el método Index se ha usado de forma predeterminada. Esto se debe a que un método llamado Index es el predeterminado que se llamará en un controlador si no se especifica uno de forma explícita.

Vaya a http://localhost:xxxx/HelloWorld/Welcome. El método Welcome se ejecuta y devuelve la cadena "This is the Welcome action method..." (Este es el método de acción de bienvenida). La asignación predeterminada de MVC 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.

Screenshot that shows the browser. This is the Welcome action method is the text in the window.

Ahora se modificará ligeramente el ejemplo para que pueda pasar información de parámetros de la dirección URL al controlador (por ejemplo, /HelloWorld/Welcome?name=Scott&numtimes=4). Cambie el método Welcome para incluir dos parámetros, como se muestra a continuación. Tenga en cuenta que el código usa la característica optional-parameter de C# 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 de 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 asigna automáticamente los parámetros con nombre de la cadena de consulta en la barra de direcciones a los parámetros del método.

Screenshot that shows the browser. Hello Scott Num Times is 4 is the text in the window.

En estos dos ejemplos, el controlador ha realizado la parte "VC" de MVC; es decir, el trabajo de vista y de controlador. El controlador devuelve HTML directamente. Normalmente, no es aconsejable que los controladores devuelvan HTML directamente, ya que eso se vuelve muy complicado de programar. En su lugar, normalmente usará un archivo de plantilla de vista independiente para ayudar a generar la respuesta HTML. Ahora verá cómo puede hacerlo.