Desde que apareció Ruby on Rails MVC tomo mas fuerza, tanto que la gente de Microsoft no ha tenido más opción que sacar una versión de ASP.NET MVC, que la verdad en mi opinión y la de muchos otros, creo que es lo mejor que ha podido hacer Microsoft, yo nunca trabaje con WebForms pero me parecía algo muy extraño y conozco colegas que dicen que WebForms es algo que nunca intentarían aprender.
Bueno pero que es MVC, viene del Ingles (Model View Controller), que en español seria Modelo Vista Controlador.
El Modelo representa los datos o entidades de Negocio, el controlador se encarga del flujo de la aplicación y la vista se encarga de desplegar los datos o recursos al usuario final.
Utilizar este patrón de desarrollo nos brinda entre otras cosas:
Separación de Responsabilidades.
Control sobre el MarkUp (HTML).
Nos brinda mas libertad al poder utilizar librerías como jQuery.
Ok, vamos a ver un ejemplo de como funciona ASP.NET MVC.
Nos vamos al Visual Studio 2008, vamos al menu File->New->Project.

File->New->Project
En la siguiente Ventana Nos aseguramos de que este selecionado el .Net FrameWork 3.5 y buscamos un proyecto de tipo ASP.NET MVC Web Application.

ASP.NET MVC Web App
Si no sale el template para proyectos ASP.NET MVC, lo mas probable es que haga falta installar ASP.NET MVC, ya que el VS.NET 2008 no lo trae por defecto. Puedes descargar ASP.NET MVC desde el sitio oficial http://www.asp.net/mvc/download/.
Seguidamente el Wizard nos preguntará si deseamos crear un proyecto de pruebas, por ahora le decimos que no.

Unit Testing Project
Visual Studio nos genera una estructura de directorios, para empezar a trabajar, las más sobresalientes son: Views, Controllers y Models.

Estructura de Directorios
Como veras los directorios no vienen vacíos ya hay un par de controladores y tres directorios de Vistas. Si ponemos a correr el proyecto veremos que ya esta la estructura básica de una web, que nos incluye Membership para el manejo de cuentas de usuarios, una pagina de Home y una de About.

Pagina Web Base
Ahora explicare que tiene que ver esos controladores y vistas con la Web Base que acabamos de ver.
Primero los Controladores, nos vamos al HomeController.cs (Asumiendo que usamos C#) y veremos lo siguiente:
...
public class HomeController : Controller
{
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult About()
{
return View();
}
}
...
Un Controlador no es mas que una clase que contiene métodos, cada método de tipo ActionResult, puede ser accesado a través de una URL, que es mapeada de la siguiente manera: /Nombre_del_Controlador/Nombre_de_la_Accion/, entonces para este caso particular seria /Home/Index/ si quisiéramos ejecutar el ActionResult Index() del Controlador HomeController. NOTA: Esto es válido siempre y cuado estemos utilizando los rutas por defecto que trae ASP.NET MVC, ya que podemos cambiar el mapeo a placer.
Quizas hayan notado que aunque la clase se llama HomeController, en la URL solo hacemos referencia a Home, esto es por convencion de ASP.NET MVC,y es bastante logico, una de las reglas para que un controlador sea Controlador, es que su nombre debe terminar en Controller así:
public class HomeController : Controller
De otra manera ASP MVC no reconocera la clase como Controlador.
Bueno ahora siguiendo con los ActionResult, veran que tiene dos cosillas que no vemos en ASP.NET WebForms, un ViewData y un Return View.
Un ViewData es un Diccionario que tiene la finalidad de pasar datos a la Vista y es una de las maneras de pasar los datos.
ViewData["Message"] = "Welcome to ASP.NET MVC!";
Aquí lo que estamos haciendo es crear un espacio en ViewData para que guarde el String :”Welcome to ASP.NET MVC!“. De esta manera pasamos ese String a la Vista Correspondiente, pero ¿Cual de todas las Vistas?, si observamos de nuevo el directorio Views vemos que existe otra convención. Si existe un Controlador llamado HomeController debe existir un directorio en Views llamado Home.

Convención de Directorios
En Views/Home Contamos con dos Vistas: Index.aspx y About.aspx.
Si vemos el controlador observamos que nos queda la sentencia :
return View();
Ustedes se preguntarán, ¿Como sabe cual de las dos vistas que están en Views/Home debe utilizar?. Sencillo, es otra convención, si al método View(), no le especificamos una vista, por defecto asumirá que en Views/Home existe una Vista que tiene el mismo nombre que el Método, el metodo actual se llama Index y vemos que existe un Views/Home/Index.aspx. De esta manera el Controlador sabe cual vista debe retornar.
Sabiendo esto, podemos decir que esta sentencia:
return View();
es igual a:
return View("Index");
Este post se esta poniendo algo largo, así que vamos a dejarlo hasta aquí, como la parte 1 de lo Básico de ASP.NET MVC.
Entradas Relacionadas: