16
8/10/2015 PROG2V01: 3.2. Componentes del patrón MVC en ASP .NET. data:text/html;charset=utf8,%3Ch2%20style%3D%22margin%3A%200px%200px%200.5em%3B%20padding%3A%200px%3B%20fontsize%3A%201.5em… 1/16 3.2. Componentes del patrón MVC en ASP .NET. A. Versiones de MVC. La tabla siguiente muestra una breve historia de la evolución de ASP .NET MVC. Versión MVC Visual Studio Versión .NET Fecha de lanzamiento Características MVC 1.0 VS2008 .NET 3.5 13/Marzo/2009 Arquitectura MVC con motor de formularios web. Ruteado. Asistentes HTML. Asistentes Ajax. Auto enlace. MVC 2.0 VS2008SP1 .NET 3.5/4.0 10/Marzo/2010 Áreas de particionamiento en módulos. Controlador asíncrono. Métodos para el asistente HTML con expresiones lambda. Atributos DataAnnotation. Validación del lado del cliente. Plantilla personalizada. Scaffolding. MVC 3.0 VS2010 .NET 4.0 13/Enero/2011 Validación JavaScript discreta. Motor de visor razor. Filtros globaales. Validación remota. Solucionador de dependencia. ViewBag. MVC 4.0 VS2010 SP1, VS2012 .NET 4.0/4.5 15/Agosto/2012 Plantilla de proyecto móvil. Agrupamiento y minimización. Soporte para Windows Azzure SDK. MVC 5.0 VS2013 .NET 4.5 17/Octubre/2013 Filtro de autenticación. Soporte Bootstrap. Nuevos elementos scaffolding. Identidad ASP .NET. MVC 5.2 VS2013 .NET 4.5 28/Agosto/2014 Ruteo basado en atributos. Corrección de errores y características menores de actualización.

3.2. Componentes Del Patrón MVC en ASP

Embed Size (px)

DESCRIPTION

Parte del Resumen de contenido sobre programacion del patron MVC con ASP NET

Citation preview

8/10/2015 PROG2­V01: 3.2. Componentes del patrón MVC en ASP .NET.

data:text/html;charset=utf­8,%3Ch2%20style%3D%22margin%3A%200px%200px%200.5em%3B%20padding%3A%200px%3B%20font­size%3A%201.5em… 1/16

3.2. Componentes del patrón MVC en ASP .NET.

A. Versiones de MVC.La tabla siguiente muestra una breve historia de la evolución de ASP .NET MVC.

VersiónMVC Visual Studio Versión

.NETFecha de

lanzamiento Características

MVC 1.0 VS2008 .NET 3.5 13/Marzo/2009

Arquitectura MVC con motor de formulariosweb.Ruteado.Asistentes HTML.Asistentes Ajax.Auto enlace.

MVC 2.0 VS2008SP1 .NET3.5/4.0 10/Marzo/2010

Áreas de particionamiento en módulos.Controlador asíncrono.Métodos para el asistente HTML conexpresiones lambda.Atributos DataAnnotation.Validación del lado del cliente.Plantilla personalizada.Scaffolding.

MVC 3.0 VS2010 .NET 4.0 13/Enero/2011

Validación JavaScript discreta.Motor de visor razor.Filtros globaales.Validación remota.Solucionador de dependencia.ViewBag.

MVC 4.0 VS2010 SP1,VS2012

.NET4.0/4.5 15/Agosto/2012

Plantilla de proyecto móvil.Agrupamiento y minimización.Soporte para Windows Azzure SDK.

MVC 5.0 VS2013 .NET 4.5 17/Octubre/2013

Filtro de autenticación.Soporte Bootstrap.Nuevos elementos scaffolding.Identidad ASP .NET.

MVC 5.2 VS2013 .NET 4.5 28/Agosto/2014Ruteo basado en atributos.Corrección de errores y característicasmenores de actualización.

8/10/2015 PROG2­V01: 3.2. Componentes del patrón MVC en ASP .NET.

data:text/html;charset=utf­8,%3Ch2%20style%3D%22margin%3A%200px%200px%200.5em%3B%20padding%3A%200px%3B%20font­size%3A%201.5em… 2/16

.

B. Carpeta de MVC.Una aplicación web típica ASP .NET MVC tiene el siguiente contenido de carpetas:

1. Información de la aplicación.

1. Properties.2. References.

2. Carpeta de la aplicación:

1. App_Data.2. App_Start.3. Content.4. Controller.5. Fonts.6. Models.7. Scripts.8. Views.

3. Archivos de configuración:

1. Global.asax.2. Packages.config.3. Startup.cs.4. Web.config.

8/10/2015 PROG2­V01: 3.2. Componentes del patrón MVC en ASP .NET.

data:text/html;charset=utf­8,%3Ch2%20style%3D%22margin%3A%200px%200px%200.5em%3B%20padding%3A%200px%3B%20font­size%3A%201.5em… 3/16

Los nombres de carpeta son los mismos en todas las aplicaciones MVC. El marco de trabajo MVC estábasado en nombres por defecto. Los controladores se encuentran en la carpeta Controllers, las vistasestán en la carpeta Views y los modelos en la carpeta Models. No es necesario usar los nombres decarpeta en el código de la aplicación.

Los nombres por defecto reducen la cantidad de código y hace más fácil para los desarrolladoresentender proyectos MVC.

A continuación se muestra un breve resumen del contenido de cada carpeta:

1. La carpeta App_Data.Esta carpeta se utiliza para guardar datos de la aplicación, por ejemplo una base de datos local,archivos .mdf, archivos XML y cualquier otro archivo relacionado con datos.

2. La carpeta App_Start.Esta carpeta contiene archivos de clase que serán ejecutadas cada vez que inicia la aplicación.Típicamente estos serían archivos de configuración como AuthConfig.cs, BundleConfig.cs,FilterConfig.cs, RouteConfig.cs, etc.

8/10/2015 PROG2­V01: 3.2. Componentes del patrón MVC en ASP .NET.

data:text/html;charset=utf­8,%3Ch2%20style%3D%22margin%3A%200px%200px%200.5em%3B%20padding%3A%200px%3B%20font­size%3A%201.5em… 4/16

3. La carpeta Content.Esta carpeta se utiliza para guardar archivos estáticos tales como hojas de estilo (archivos CSS),íconos e imágenes. Incluye los archivos bootstrap.css, bootstrap.min.css y Site.css por defecto.

8/10/2015 PROG2­V01: 3.2. Componentes del patrón MVC en ASP .NET.

data:text/html;charset=utf­8,%3Ch2%20style%3D%22margin%3A%200px%200px%200.5em%3B%20padding%3A%200px%3B%20font­size%3A%201.5em… 5/16

4. La carpeta Controllers.Esta carpeta contiene las clases controller responsables de manejar las entradas del usuario y lasrespuestas.

MVC requiere que el nombre de todos los archivos controller terminen con la palabra "Controller".

Visual Web Developer crea un Home controller (para la página Home y About) y un AccountController (para páginas de ingreso).

8/10/2015 PROG2­V01: 3.2. Componentes del patrón MVC en ASP .NET.

data:text/html;charset=utf­8,%3Ch2%20style%3D%22margin%3A%200px%200px%200.5em%3B%20padding%3A%200px%3B%20font­size%3A%201.5em… 6/16

5. La carpeta Fonts.Esta carpeta contiene los archivos personalizados de fuente de letra para la aplicación.

8/10/2015 PROG2­V01: 3.2. Componentes del patrón MVC en ASP .NET.

data:text/html;charset=utf­8,%3Ch2%20style%3D%22margin%3A%200px%200px%200.5em%3B%20padding%3A%200px%3B%20font­size%3A%201.5em… 7/16

6. La carpeta Models.Esta carpeta contiene clases que representan los modelos de la aplicación. Un modelo guarda ymanipula los datos de la aplicación.

7. La carpeta Views.Esta carpeta guarda los archivos HTML relacionados con la presentación de la aplicación (lasinterfaces de usuario), conteniendo una carpeta por cada controlador.

Visual Web Developer crea las carpetas Account, Home y Shared dentro de esta carpeta, las cualestienen la función siguiente:

1. Carpeta Account: contiene páginas para registrar e iniciar sesión de cuentas de usuario.2. Carpeta Home: usada para almacenar páginas de la aplicación tales como las páginas home

y about.3. Carpeta Shared: usada para guardar vistas compartidas entre controllers (páginas maestras

y páginas de diseño).

8/10/2015 PROG2­V01: 3.2. Componentes del patrón MVC en ASP .NET.

data:text/html;charset=utf­8,%3Ch2%20style%3D%22margin%3A%200px%200px%200.5em%3B%20padding%3A%200px%3B%20font­size%3A%201.5em… 8/16

8. La carpeta Scripts.Esta carpeta guarda los archivos JavaScript de la aplicación.

8/10/2015 PROG2­V01: 3.2. Componentes del patrón MVC en ASP .NET.

data:text/html;charset=utf­8,%3Ch2%20style%3D%22margin%3A%200px%200px%200.5em%3B%20padding%3A%200px%3B%20font­size%3A%201.5em… 9/16

A continuación se describen los archivos de configuración:

Archivo Descripción

Global.asaxPermite escribir código que se ejecuta en respuesta a eventos a nivel de aplicación, talescomo Application_BeginRequest, application_start, application_error, session_start,session_end, etc.

Packages.config Este archivo es administrado por NuGet para mantener un seguimiento de los paquetes yversiones que se han instalado en la aplicación.

Web.config Este archivo contiene configuraciones a nivel de la aplicación.

.

C. Ruteo en MVC.En una aplicación de formularios web ASP .NET, cada URL debe coincidir con un archivo .aspx específico.Por ejemplo, la URL http://www.edutec.edu.sv/default.aspx debe coincidir con el archivo default.aspxque contiene código y marcación para proporcionar una respuesta al navegador.

8/10/2015 PROG2­V01: 3.2. Componentes del patrón MVC en ASP .NET.

data:text/html;charset=utf­8,%3Ch2%20style%3D%22margin%3A%200px%200px%200.5em%3B%20padding%3A%200px%3B%20font­size%3A%201.5em… 10/16

ASP .NET presenta el ruteo para eliminar la necesidad de mapear cada URL con un archivo físico. El ruteopermite definir un patrón URL que mapea hacia el manejador solicitado. Este manejador solicitado puedeser un archivo o una clase. En una aplicación de formularios web ASP .NET, el manejador solicitado es unarchivo .aspx y en MVC es la clase controller y el método Action. Porejemplo, http://dominio/estudiantespuede ser mapeado hacia http://dominio/estudiantes.aspx en losformularios web ASP .NET y la misma URL puede ser mapeada hacia el controller estudiantes y al métodode acción Index en MVC.

El ruteo define el patrón URL y la información del navegador. Todas las rutas configuradas de unaaplicación están almacenadas en una tabla de rutas y serán usadas por el motor de ruteo para determinarla clase manejadora apropiada o el archivo para una solicitud entrante.

La siguiente imagen ilustra el proceso de ruteo:

.

Configurando el ruteo.

Toda aplicación MVC debe configurar (registrar) al menos una ruta, la cual es configurada por el marco detrabajo MVC por defecto. Puede registrar una ruta en la clase RouteConfig, la cual está en RouteConfig.csbajo la carpeta App_Start. La siguiente figura muestra cómo configurar una ruta en la clase RouteConfig.

8/10/2015 PROG2­V01: 3.2. Componentes del patrón MVC en ASP .NET.

data:text/html;charset=utf­8,%3Ch2%20style%3D%22margin%3A%200px%200px%200.5em%3B%20padding%3A%200px%3B%20font­size%3A%201.5em… 11/16

Como puede apreciarse en la figura anterior, la ruta es configurada usando el método deextensiónMapRoute() de RouteCollection, donde el nombre es "Default", el patrón URL es "controller/action/id" y los parámetros por defecto de controller, método action y el parámetro id.Los valores por defecto especifican cuál controlador, método de acción o valor para el parámetro id debenser usados si no existen en la solicitud de URL.

De la misma manera, puede configurar otras rutas usando el método MapRoute de RouteCollection, elcual es en realidad una propiedad de la clase RouteTable.

.

El patrón URL.

El patrón URL es considerado sólo después de parte del nombre de dominio en la URL. Por ejemplo, elpatrón URL "controller/action/id" luciría como localhost:1234/controller/action/id. Cualquier cosadespués de "localhost:1234/" sería considerado como un nombre de controlador. De la misma manera,cualquier cosa después del nombre del controlador sería considerada como el nombre de la acción ydespués el valor del parámetro id. La figura siguiente explica mejor esta situación:

8/10/2015 PROG2­V01: 3.2. Componentes del patrón MVC en ASP .NET.

data:text/html;charset=utf­8,%3Ch2%20style%3D%22margin%3A%200px%200px%200.5em%3B%20padding%3A%200px%3B%20font­size%3A%201.5em… 12/16

Si el URL no contiene nada despué del nombre del nombre del dominio, entonces el controlador pordefecto y el método de acción manejarán la solicitud. Por ejemplo, http://localhost:1234 sería manejadapor HomeController y el método Index, como se encuentra configurado en los parámetros por defecto.

La siguiente tabla muestra cuál controlador, método de acción y parámetro id manejarían diferentes URLsconsiderando la ruta predeterminada anterior.

URL Controller Action Id

http://localhost/home HomeController Index null

http://localhost/home/index/123 HomeController Index 123

http://localhost/home/about HomeController About null

http://localhost/home/contact HomeController Contact null

http://localhost/student StudentController Index null

http://localhost/student/edit/123 StudentController Edit 123

.

Rutas múltiples.

También es posible configurar una ruta personalizada usando el método de extensión MapRoute. Paraello se necesita proporcionar al menos dos parámetros en MapRoute, el nombre de la ruta y el patrónURL. El parámetro Defaults es opcional.

8/10/2015 PROG2­V01: 3.2. Componentes del patrón MVC en ASP .NET.

data:text/html;charset=utf­8,%3Ch2%20style%3D%22margin%3A%200px%200px%200.5em%3B%20padding%3A%200px%3B%20font­size%3A%201.5em… 13/16

Se puede registrar múltiples rutas personalizadas con diferentes nombres. Considere el siguiente ejemplodonde se registra la ruta "Student".

Ejemplo de rutas personalizadas

public class RouteConfig

public static void RegisterRoutes(RouteCollection routes)

routes.IgnoreRoute("resource.axd/*pathInfo");

.

routes.MapRoute(

name:"Student",

url: "students/id",

defaults:new controller = "Student",action = "Index"

);

.

routes.MapRoute(

name: "Default",

url: "controller/action/id",

defaults: new controller= "Home", action = "Index", id = UrlParameter.Optional

);

.

Como se muestra en el código anterior, el patrón URL para la ruta Student es students/id, la cualespecifica que cualquier URL que inicie con domainName/student debe ser manejadaporStudentController. Observe que no se ha especificado action en el patrón URL debido a que sedesea que cada URL que inicie con student siempre use la acción Index de StudentController. Se haespecificado un controlador por defecto y una acción para manejar cualquier solicitud URL que iniciedesde domainName/students.

El marco de trabajo MVC evalúa cada ruta en secuencia. Empieza con la primera ruta configurada y si elURL entrante no satisface el patrón URL de la ruta entonces evaluará la segunda ruta y asísucesivamente. En el ejemplo anterior, el motor de ruteo evaluará primero la ruta Student y si el URL noinicia con /students hasta entonces considerará la segunda ruta que es la ruta por defecto.

La siguiente tabla muestra cómo diferentes URLs serán mapeados a la ruta Student:

8/10/2015 PROG2­V01: 3.2. Componentes del patrón MVC en ASP .NET.

data:text/html;charset=utf­8,%3Ch2%20style%3D%22margin%3A%200px%200px%200.5em%3B%20padding%3A%200px%3B%20font­size%3A%201.5em… 14/16

Url Controller Action Id

http://localhost/students/123 StudentController Index 123

http://localhost/students/index/123 StudentController Index 123

http://localhost/students?Id=123 StudentController Index 123

.

Restricciones de ruta.

Se puede aplicar restricciones en el valor del parámetro configurando restricciones de ruta. Por ejemplo, lasiguiente ruta aplica una restricción en el parámetro id que el valor de id debe ser numérico.

Ejemplo: restricción de ruta.

routes.MapRoute(

name: "Student",

url: "student/id/name/standardId",

defaults: new controller = "Student", action = "Index", id = UrlParameter.Optional, name =UrlParameter.Optional, standardId = UrlParameter.Optional,

constraints: new id = @"\d+"

);

.

De manera que si se proporciona un valor no numérico para el parámetro id entonces la solicitud serámanejada por otra ruta o, si no hay rutas coincidentes entonces el error "The resources could not befound" será lanzado.

.

Registro de rutas.

Ahora, después de configurar todas las rutas en la clase RouteConfig, es necesario registrarla en elevento Application_Start() en Global.asax de modo que incluya todas las rutas en RouteTable.

Ejemplo: registro de rutas

public class MvcApplication : System.Web.HttpApplication

protected void Application_Start()

RouteConfig.RegisterRoutes(RouteTable.Routes);

8/10/2015 PROG2­V01: 3.2. Componentes del patrón MVC en ASP .NET.

data:text/html;charset=utf­8,%3Ch2%20style%3D%22margin%3A%200px%200px%200.5em%3B%20padding%3A%200px%3B%20font­size%3A%201.5em… 15/16

.

La figura siguiente ilustra el proceso de registro de ruta.

8/10/2015 PROG2­V01: 3.2. Componentes del patrón MVC en ASP .NET.

data:text/html;charset=utf­8,%3Ch2%20style%3D%22margin%3A%200px%200px%200.5em%3B%20padding%3A%200px%3B%20font­size%3A%201.5em… 16/16

En resumen:

1. El ruteo juega un papel importante en el marco de trabajo MVC, ya que rutea mapas URL a archivosfísicos o clases (clases controller en MVC).

2. El ruteo contiene patrones URL y manejadores de información. Los patrones URL inician después delnombre del dominio.

3. El ruteo puede ser configurado en la clase RouteConfig. Múltiples rutas personalizadas también puedenser configuradas.

4. Las restricciones de ruta aplica restricciones en el valor de los parámetros.5. El ruteo debe ser registrado en el evento Application_Start del archivo Global.ascx.cs.