TUT: Aprender ASP .NET MVC Paso a Paso en 7 dias(Día 3)


Contenido
  • ¿Cuál es la Agenda?
  • Lab 10: Vistas Paciales
  • Lab 11: Validación usando Anotación de Data
  • Lab 12: MVC4: Razor
  • Lab 13: Seguridad en MVC(Windows Authentication)
  • Lab 14: Seguridad en MVC(Forms Authentication)
  • ¿Qué hay para el Cuarto Día?
¿Cuál es la Agenda?

Este artículo es la continuación de Aprender paso a paso en 7 días y puedes revisarlo en los link siguientes:
En este día 3 veremos los siguientes cinco laboratorios:
  • Vistas paciales
  • Validación usando anotaciones de data
  • Razor(MVC 4)
  • MVC Windows Authentication
  • MVC Forms Authentication
Lab 10: Vistas Parciales
Cuando hablamos acerca de aplicaciones web, reusabilidad es la clave. Como desarrolladores MVC estaríamos gustosos para crear vistas reusables. Nosotros gustaríamos crear vistas reusables como Vistas de cabecera y pie de página y usarlos dentro de una vista MVC grande.

La vistas reusables podrían se logrados creando “Vistas Parciales”.

Paso 1: crear una simple vista
Para desarrollar este laboratorio vamos a crear un nuevo proyecto vacío MVC(MvcTercerDia).

El primer paso será crear una simple vista con un controlador. Puedes ver en la siguiente captura, Ahí hay una simple vista llamada “Index.aspx” el cual será invocada via HomeControlles.aspx.

Paso 2: Crear una simple vista parcial
Ahora que hemos creado la vista principal, es tiempo de crear una vista parcial el cual puede ser consumido desde la vista “Index”. En orden para crear la vista parcial, click derecho sobre la carpeta view y agregar vista, marcar el check box “Crear como vista parcial” como se muestra en la siguiente figura.


Paso 3: Llamar a la vista parcial en la principal.
Ingresar algo de texto o lógica en la vista parcial


Paso 4: Llamar a la vista parcial en la principal.
Finalmente llamar la vista parcial en la vista principal usando la función “Html.RederPartial” y pasar el nombre de la vista en la función como se muestra en el siguiente código.

Tambien asegurarse que la vista parcial este en el mismo folder donde está su vista principal. Es caso de que no este , entonces necesitaras pasar el path en la función RenderPartial. Puedes ver la siguiente figura se ha movido la vista parcial en el folder Views/Home.

Paso 5: Ejecutar el programa ara ver la acción
Finalmente presionar Ctrl+F5, y veras como se carga la vista parcial.
Lab 11: Validación usando Anotación de Data
La validación de data es una de las principales cosas en cualquier aplicación web. Como desarrollador deberías ejecutar la validación en el cliente(browser) y en el servidor. Así que probablemente le gustaría escribir la validación de una vez y luego esperar el framework de validación para generar la lógica de validación en ambos extremos.

Buenas noticias, esto es posible pero usando anotaciones de data. En MVC validas los valores del modelo. Cada vez que la data llega desde el modelo tu preguntaras al modelo diciendo, es este la propiedad proveída?, son los valores dentro del rango?.

Las Anotaciones de data son metadata el cual puedes aplicar en el modelo en el framework MVC validara usando la metadata proveída.

En este laboratorio vamos a enfocar la validación usando anotaciones de datos. Lo primero que vamos a hacer es, en el mismo proyecto(MVCTercerDia), crear una clase modelo Customer y una vista fuertemente tipada de entrada de datos llamada Home.cshtml.

Asumiendo que tienes creado el modelo y la vista fuertemente tipada, vamos a empezar a aplicar Anotaciones de Data.

Paso 1: Decorar el modelo con Anotación de Data.
Importante importar el espacio de nombres DataAnnotations como se muestra en el código de abajo.

Vamos a decir que tenemos un modelo Customer y queremos asegurar que el campo código es obligatorio.

Entonces aplicar el atributo “Required” como se muestra en el siguiente código. si la validación falla y le gustaría mostrar un mensaje de error, puedes pasar el “ErrorMessage” también.



Paso 2: Cambiar el codigo Home.cshtml
Ahora hay algunos cambios de código que deberiamos hacer en el código Home.cshtml. Dentro del body nos gustaría mostrar el mensaje de error si la data no es correcto es es hecho usando el siguiente código.

También necesitamos codificar nuestro formulario de ingreso de datos. a continuación se muestra el fragmento de código para el mismo. Note que la funcion “EditorForModel” automáticamente generara los controles UI de acuerdo a las propiedades del modelo. Entonces no necesitamos crear el control de forma individual como se hizo en los laboratorios anteriores.

Paso 3: Ahora en la clase controlador Customer.
Ahora en la clase controlador Customer agregamos la validación, cuando el formulario llama un post sobre el controlador, te gustaría conocer si el estado del modelo es correcto o no. Esto puede hacerse verificando con la propiedad ModelState.Isvalid. Si la propiedad es válida entonce llama a procedimiento de guardar o muestra la vista “PostCustomer”(Solo muestra los datos del formulario), en caso sea falso entonces retorna a la vista original “Home”, a continuación se muestra el código del controlador.

Paso 4: Probando la Aplicación.
Finalmente presionar Ctrl +F5, y al enviar el control en blanco mostrar el mensaje de error, pero esta validación se realiza en el servidor, porque el controlador es quien valida.

Nota: Note que se ejecutó la acción post al método del controlador PostCustomer

Paso 5: Habilitando la validación en el cliente
En los pasos anteriores las validaciones se realizan en el lado del servidor, esto significa que al

momento de enviar el formulario que contiene errores de validación, el control pasa al servidor solo para regresar con mensajes de error. para evitar este ida y vuelta se puede agregar capacidades del lado del cliente en la vista Home.cshtml.

La validación en el cliente se puede realizar con jQuery Unobtrusive Validation, para lo cual hay que referenciarlo en nuestro proyecto. Ejecutar el siguiente comando en Package Manager Console(Herramientas/Administrador de paquetes de Biblioteca) : PM> Install-Package jQuery.Validation.Unobtrusive.

Ahora, ubicar el archivo web.config abrirlo y asegurar que existen las siguientes teclas de la sección <appSettings> las claves ClientValidationEnabled y UnobtrusiveJavaScriptEnabled asignar el valor true:

Utilizar el ayudante Url.Content () para obtener las direcciones URL de los tres archivos de script, a saber. jquery-1.4.4.js, jquery.validate.js y jquery.validate.unobtrusive.js. Estos archivos son necesarios para llevar a cabo la validación del lado del cliente(home.cshtml). 


Paso 6: Probando la Aplicación.
Finalmente presionar Ctrl +F5, entonces la al presionar el botón enviar la validación lo realizará en el cliente sin ir al servidor.

Otros atributos de anotación de datos

La prueba resultaría:
Lab 12: MVC 4 - Razor
Hasta ahora este artículo ya estuvo usando Razor. Qué es Razor? sola para dar una respuesta corta. Este es un tipo de vista para MVC. El problema desde el punto de vista Web Form este no se hizo pensando en MVC, por lo que la sintaxis es un poco pesado.

Paso 1: Practica con sintaxis Razor
Ahora que ya tenemos una idea de lo que es Razor vamos ejecutar algunas sintaxis comunes Razor y tratar a tener una idea de lo fácil que es Razor comparado con las vistas ASPX.

Práctica 1: Simple línea de código

Si quieres mostrar una simple variable puedes hacer algunas cosas como se muestra en el código de abajo. Todos la sintaxis Razor empieza con @. Si tiene una simple linea de codigo no necesitas “{”. Razor se da cuenta de la conclusión lógica.

Si comparas la sintaxis de arriba con una vista ASPX, necesitas tipear el código siguiente. Asi que ¿No es una sintaxis más simple, ordenado y ligero?.




Práctica 2: Múltiples líneas de código


Práctica 3: bucle Foreach y condición If
para bucles y condiciones if llega a ser más simple como se muestra en el siguiente código:

Práctica 4: No te preocupes por @
Si estás pensando si Razor es confuso con @ de Razor y @ de una dirección email, no te preocupes, Razor entiende la diferencia. Para instanciar en la siguiente línea, la primera linea Razor ejecutará como un código y la segunda linea de codigo lo entiende solo como una dirección email.


Práctica 5: Mostrar @
En caso quieras mostrar “@” solo tipea esto cada vez como se muestra en el siguiente codigo. semostraráa la siguiente imagen.


Práctica 6: Mostrar HTML con Razor
En caso quieras mostrar HTML en el browser. para instanciar una simple variable llamada como link el cual tiene código HTML. Estoy mostrando la variable link en el browser.

Si ejecutas el código de arriba, te sorprenderias ver que este no se muestra como HTML, sino como una simple pantalla como se muestra a continuación. ahora como se muestra acontinuación, Ahora eso no es lo que esperamos. Nos esperábamos una pantalla HTML adecuado. Esto se hace mediante Razor para evitar ataques XSS(Hablaremos de esto en secciones posteriores).

Pero no te preocupes, el equipo de Razor se ha hecho cargo de esto. Puedes usar ”Html.Raw” para mostrar, la misma que se muestra en el siguiente código:


Lab 13: Seguridad MVC(Windows Authentication).
La seguridad es una de las cosas más importantes en cualquier aplicación independientemente, quien los desarrolla, en cualquier tecnología, lo mismo puede decirse de MVC.

Antes de empezar este laboratorio una cosa que necesitamos entender es que MVC al final del día se encuentra en el motor ASP.NET.

Nota: En este artículo no vamos a estar buscando en los fundamentos de la autenticación de windows y forms.
Vamos a implementar autenticación Windows en una aplicación MVC 4.

Ahora, una manera de implementar autenticación windows es realizando algunos cambios en nuestro proyecto.

Paso 1: Habilitar la autenticación Windows.
El primer paso es habilitar la autenticación Window. Esto lo realizamos en el archivo de configuración Web.config usando la etiqueta authentication y authorization que se muestra a continuación:

Paso 2: Solo algunos defectos.
En la plantilla MVC 4, hay un pequeño defecto. Esto ejecuta la autenticación Forms por defecto. Establezca las etiquetas debajo de la etiqueta appsetings para evitar problemas.


Paso 3: Aplicando etiquetas de autorización en las acciones del controlador.
una vez que tienes habilitado la autenticación Windows en el Web.config, usar la etiqueta “[Authorize]” y especificar cuáles usuarios pueden tener accesoa los controladores y sus acciones.


Por favor note que el usuario deberia estar presente en su windows Active Directory o su grupo local(en mi caso uso windows 8 y en el administrador de usuarios y grupos- click derecho en Equipo-> Administrar), como en mi caso el usuario ronald es mi usuario de grupo local.




Paso 4: Crear Aplicación en el Servidor IIS 8( Internet Information Server)
Tienes que asegurarte que tienes instalado el IIS en su equipo para lo cual lo puede verificar en el Panel de Control-> Agregar o quitar Programas-> Activar características de windows.


Una vez agregado la característica anterior, ahora vamos a crear la aplicación en el IIS con la habilitación de autenticación Windows solamente.

Cargamos en administrador de IIS y agregamos aplicación con el nombre MvcTercerDia, creamos un directorio MVC_WINDOWS en donde se publicaran nuestra aplicación desde Visual Studio(esto lo veremos en el siguiente paso) .


Habilitamos la autenticación Windows en nuestra aplicación creada, seleccionando la opción Autenticación.


Paso 5: Publicando nuestra Aplicación
Una vez que haz creado la aplicación en IIS, es tiempo de publicar la aplicación a la carpeta de aplicación web. Para lo cual hacemos click derecho sobre el proyecto( Explorador de proyectos de Visual Studio) y seleccionamos Publicar.

Le damos la ruta(creada en el paso anterior, cuando creamos la aplicación en IIS) y le damos en publicar.



Paso 6: Ejecutar el controlador y la acción
Finalmente ejecutar el controlador y la acción(en el navegador digitarlo directamente) y ver como el cuadro de autenticación Window para el ingreso del usuario y la contraseña. Esto validará de acuerdo a la autorización que se asignó en el controlador Home.



Si las credenciales son ingresados apropiadamente, deberías ser capaz de ver lo siguiente:




Lab 14: Seguridad MVC(Forms Authentication)
En el laboratorio anterior vimos como hacer autenticación windows. La autenticación Windows es ideal para sitios web de intranet. Pero como pronto hablaremos acerca de sitios web para internet, crear y validar usuarios de windows Active Directory/trabajar con grupos de usuarios no es una opción factible. Entonces en este tipo de escenarios “Forms authentication” es la manera a seguir.

Paso 1: Definir la pagina Login y su controlador.
La primera cosa que necesitamos es definir el controlador el cual invocará la vista login.

así tengo creado una simple acción index el cual invoca una vista llamado Login. Esta vista Login tomará entradas como username y password.

Paso 2: Creando la vista Login.

El siguiente paso es crear el formulario Login el cual tomará el username y password. Para crear el formulario y he usado la vista razor y las clases HTML helperñ En caso tu eres nuevo en clases HTML helper por favor revisar el Lab 12.


Este formulario HTML hace un post a la acción “Login” del controlador “Home” y es usa el método Post. Así cuando los usuarios presionan el boton enviar, este lanzara la acción “index”.


Paso 3: Validar las credenciales.
En la acción Index la primera cosa que necesitamos hacer es verificar si el usuario es correcto o no. Por ahora tenemos en código el usuario y contraseña. Esto puede siempre ser reemplazado por consultas del servidor SQL o otra fuente.

Una vez que hemos verificado las credenciales el siguiente paso es usar la famosa clase “FormsAuthentication” y asignar la cookie diciendo que el usuario en correcto.

De modo que en la siguiente solicitud cuando el usuario llegue no tendrá que ser validado una y otra vez. Despues de que la cookie se establece es redireccionado a la vista “About” o de lo contrario te quedes en la vista Login.




Paso 4: Atributo Authorize
También necesitamos usar el atributo “[Authorize]” dentro los controladores, los cuales queremos restringir para los usuarios no autorizados.

Por ejemplo se puede ver el siguiente código para la acción “Index” del controlador “Home” que esta decorada con el atributo “Authorize”.

Si cualquier usuario no autorizado, accede directamente a cualquiera de estos controladores ellos serán enviados a la vista Login es decir detrás del Index.


Paso 5: Cambiar el archivo web.config
Finalmente necesitamos hacer cambio en el famoso archivo “web.config” es decir habilitar la seguridad “Forms”. la parte mas importante en el código de abajo es la propiedad “LoginUrl”.

Paso 6: Vemos la acción en Autenticación Forms.
Si ahora llamas a index este directamente se muestra la vista Login, este test prueba que la autenticación “Forms” esta trabajando.




¿Que hay para el cuarto día?
En el cuarto dia veremos una introducción a Jquery, Json, Controlador Asíncrono y diferencia entre variables Viewdata y Tempdata, Viewbag y Session.

ART: Diferencia entre MVC y web API


Introducción
Este articulo explica la diferencia entre ASP.NET MVC y el ASP.NET Web API y también explica cuando usar Web API con MVC.


Acerca de MVC
Modelo Vista Controlador(MVC) divide una aplicación en tres partes, Modelo, Vista y Controlador. ASP.NET tiene muchas opciones para crear aplicaciones web  usando ASP.NET  Web Form, Framework MVC que combina las caracteriscticas de ASP.NET como MasterPages, Membership basado en autenticación. MVC esta en el ensamblado "System.Web.MVC".
Los componentes que son incluidos por MVC
Modelo: Los modelos son objetos usados para recuperar y almacenar el estado del modelo en la base de datos.vamos a ver un ejemplo: Hay un objeto “Item” que recupera los datos de la base de datos y realiza una operación y entonces actualiza la data en la base de datos. si una aplicación solo lee un conjunto de datos y lo envía a la vista, entonces la aplicación  no tiene una clase asociada y el modelo de la capa fisica.
Vista: Los componentes vista muestran la Interface de usuario(UI) de la aplicación que es creado por los datos del modelo. Por ejemplo: la vista de la tabla  Items mostrados en el DrowDownList y TextBoxes que dependen del estado actual del objeto “Item”.
Controlador: En MVC, los controladores son también llamados componentes. estos componentes administran la interacción de los usuarios y la selección de una vista para mostrar en la UI. El principal trabajo de los controladores es que estos administran los valores de las consultas y transfieren estos valores a los modelos.


Los modelos recuperan la información y actualizan la información en la base de datos. las vista son usados sólo para mostrar la información, y los controladores son usados para gestionar y responder a las entradas de los usuarios y sus interacciones.


Acerca de los Web API
ASP.NET Web API permite mostrar los datos en varios formatos, como XML y JSON. Este es un framework que usa los servicios HTTP y hace que esto sea fácil para proporcionar una respuesta a la solicitud del cliente. La respuesta depende de la petición de los clientes. Web API construye los servicios HTTP y gestiona la petición usando el protocola HTTP. Web API es codigo abierto y este puede ser hospedado en la aplicación o en el servidor IIS. la petición puede ser GET, POST, DELETE o PUt. Podemos decir de las Web API lo siguiente:
  • Es un Servicio HTTP
  • Es diseñado para llegar un amplio rango de clientes.
  • Utiliza la aplicación HTTP


Diferencia entre MVC y Web API
Hay muchas diferencias entre MVC y Web API, los que se indican a continuación:
  • Usamos MVC para desarrollar aplicaciones web  que responde tanto a datos como a vistas pero  Web API es usado para generar servicios HTTP que responden sólo a datos.
  • Web API  retorna los datos en varios formatos como JSON, XML y otros formatos  basados en la aceptación de la cabecera de petición. Pero MVC retorna datos en formato JSON usando  JSONResult.
  • Web Api soporta negociación de contenidos y autoalojamiento. Todas estas no son soportadas en MVC.
  • Web API incluye varias características de MVC, como ruteo, enlace de modelo pero estas características son diferentes y están definidas en el ensamblado “System.Web.HTTP” y en MVC estas características  son definidas en el asemble “System.Web.Mvc”.
  • Web API ayuda a la creación del servicio Restful cobre el  Framework .NET, pero MVC no los soporta.


Cuando Combinar MVC con Web API
  • Cuando hacemos autoalojamiento en la aplicación, en este combinamos ambos Controlador MVC y la API en un único proyecto y este ayuda a gestionar la peticiones AJAX  y responder en XML, JSON y otros formatos.
  • Combinamos MVc y Web API para habilitar la autorización para una aplicación. En esto creamos dos filtro, uno para Web API y otro para MVC.

    Este imagen describe la combinación de ASP.NET y ASP Web API

    TUT: Aprender ASP .NET MVC Paso a Paso en 7 dias(Dia 2)


    Contenido 
    • ¿Cuál es la Agenda? 
    • Lab 06: Testeo Unitario en Proyectos MVC 
    • Lab 07: Entendiendo el Ruteo en MVC 
    • Lab 08: Validando y Asignando Valores por defecto a las URLs en MVC 
    • Lab 09: Entendiendo URLs Salientes en MVC 
    • ¿Qué hay para el Tercer Día? 

    ¿Cuál es la Agenda?

    Este artículo es la continuación de Aprender paso a paso en 7 dias y puedes revisarlo en los link siguientes: 
    En este dia 2 veremos los siguientes cuatro laboratorios: 
    • Escribiendo Testeos Unitarios en Proyectos MVC. 
    • Configurar Rutas en MVC 
    • Validación de Rutas en MVC 
    • Configurando Rutas de salida en MVC 
    Lab 06: Testeo Unitario en Proyectos MVC
    Cuando empezamos toda la serie MVC(Dia 1) empezamos con dos problemas relacionados al code-behind. 
    ¿Cómo podemos hacer testeos unitarios en ASP.NET code behind?
    ¿Como podemos reusar el code behind de ASP.NET con diferentes interfaces de usuarios?

    En esta sección vamos a concentrarnos en el primer punto, es decir, Testeo Unitario.
    Solo una rápida recapitulación si necesitamos hacer testeo unitario al siguiente método btngenerateinvoices_click de Code behind de ASP.NET, tenemos los siguientes problemas: 
    • ¿Cómo hacemos para crear los objetos sender y eventargs? 
    • El código de abajo se ejecuta bajo el objeto HttpContext, ¿Cómo puedo imitarlo? 
    • ¿Qué pasa con los controles de interfaz de usuario de ASP.NET, Cómo accedo a estos? 
    • ¿Qué pasa con otros objetos de ASP.NET como objeto sesion,y aplicacion, cómo accedo a estos? 
    Muchos desarrolladores podrían hablar acerca de mock tests, rhino mocks,etc. pero todavía esto es desapercibido y la compliacion aumenta con las variables de sesion, objetos de data view, controles ASP.NET UI, creando aun mas confusión.






    Asi que lo que haremos en esta sección es crear una simple aplicación MVC y haremos teste unitario en aplicaciones ASp.NEt usando el testeo unitario de Framework VSTS.

    Paso 1: Crear un simple proyecto las mostrar Customer.
    El primer paso es crear un simple proyecto MVC. Usaremos el mismo proyecto el cual nosotros temos creado en MVC(Modelo Vista Controlador) del dia 1(MyFirstHelloWorld). En caso no tengas el proyecto mencionado, por favor crea uno usando el enlace de arriba.


    La clase controlador al final del día 1 es una simple clase .NET. Por ejemplo, si miras el código del proyecto cercanamente, puedes ver fácilmente la clase controlador de Customer con se muestra a continuación: 


    En simples palabras este es una simple clase .NET podemos fácilmente instanciar la clase y crear automáticamente testeos unitarios para el mismo. Esto es exactamente lo que vamos hacer en nuestros siguientes pasos:

    Paso 2: Agregando un simple proyecto de testeo unitario.
    Vamos a usar nuestro testeo unitario del framework de VSTS para testear la clase controlador. Agrega un nuevo proyecto a su solución usando la plantilla Proyecto Prueba Unitaria.


    Paso 3: Agregar referencias apropiadas al proyecto
    Necesitamos agregar un referencia a la aplicación MVC en nuestro proyecto de prueba unitaria(MVCUnitTest), para que podamos controlar la clase Controlador.


    Una vez agregado la referencia , deberías ver en la aplicación MVC e la referencia de proyecto como se muestra en la siguiente imagen:

    Paso 4: Escribir la prueba unitario
    Una vez que tengas agregado la referencia, abre la clase de prueba unitaria,es decir UnitTest1.cs. En esta clase crear un simple método de teste llamado DisplayCustomer el cual es atribuido por el atributo TestMethod como se muestra en el siguiente código.

    Si tu ves el siguiente pedazo de código estamos creando un objeto de la clase controlador, invocando la acción del controlador, es decir, DisplayCustomer y entonce verificamos si el nombre de la vista es DisplayCustomer. Si ellos son igual esto significa el paso de la prueba o en caso contrario esto es fallido.

    Paso 5: Finalmente ejecutamos la prueba unitaria
    Una vez escrito la prueba es tiempo de ejecutar caso de prueba para lo cual vamos hacer click en el menú Prueba->Ventanas-> Explorador de Pruebas.

    En el Explorador de pruebas hacer click derecho y seleccionar Ejecutar Pruebas Seleccionadas.

    Si las cosas van bien tu deberias ver una indicación de color verde que indica que la prueba ha pasado o caso contrario deberías ver un color rojo con el detalle indicando porque la prueba ha fallado.


    Lab 7: Entendiendo el ruteo MVC
    Introducción

    Al final del día, MVC no es nada más que una dirección de URL asignada a los controladores y los controladores asignados a acciones.

    Por ejemplo cuando un usuario envia un requerimientio de URL como http://www.maninformatic.com/UbicaProducto del navegador, estas acciones son asignadas con los controladores de MVC, y los controladores de MVC finalmente invocan esas funciones.

    Lo siguiente es una simple tabla el cual muestra cómo todo esto se ve así.

    Añadiendo aún más a la complicación que podemos tener varias direcciones URL asignadas a un controlador o se puede tener más de un controlador asigna a una sola URL. Por ejemplo, puedes tener www.maninformatic.com/contactenos y www.maninformatic.com/conocenos asignada a un solo controlador llamado ConocenosController
    .
    Sería muy bueno si tenemos algún tipo de mecanismo por el cual podemos configurar estas asignaciones. Eso es lo que exactamente MVC routing significa. El enrutamiento MVC ayuda a configurar y asignar la dirección URL con los controladores fácilmente.


    Paso 1: Tomar el proyecto MVC creado en el dia 1
    Vamos a tomas el mismo proyecto de Customer( MyFisrtHelloWorld) que hemos desarrollado en la seccion anterior.

    Paso 2: Cambiar Global.asax.cs
    Todas las asignaciones de rutas son almacenados en el archivo de código fuente RouteConfig.cs. Así que como primer paso es que tenemos que ir a cambiar este archivo.


    Todas las asignaciones de rutas son almacenadas dentro de la colección llamada routes. Esta colección pertenece al namespaces System.Web.Routing. Para agregar una ruta tu necesitas llamar el método MapRoute y pasar tres parámetros name, url y defaults.

    Debajo está una captura de retazo de código de la función MapRoute.



    • Name es el nombre principal por la cual la ruta será identificada dentro la colección. 
    • URL define que tipo de formato de URL queremos conectar con el controlador.En el pedazo de código siguiente decimos que el formato URL es View/ViewCustomer. 
    • Defaults define la clase controlador y las funciones de accion los cuales serán invocados cuando la URl es llamada. Por ejemplo, en el código siguiente, decimos que cuando View/ViewCustomer es llamado, este invocará la clase controlador Customer y la funcion acción invocada sera DisplayCustomer. 
    En caso su controlador tome parámetros, puede usar el { (llaves).Por ejemplo en el siguiente pedazo de codigo, nosotros hemos usado { para especificar que podemos tener un parámetro id. Si quieres definir los parámetros como opcionales puedes usar el enum UrlParameter.Optional.

    Lo primero es comentar el código de asignación predeterminada. Vamos a explicar el código de asignación predeterminada más tarde.

    Ingresamos el siguiente codigo, el cual significa cuando llamamos a http:/localhost/view/ViewCustomer esto invocará al controlador Customer y llamara la funcion DisplayCustomer.


    Paso 3: Ejecuta la aplicación
    Si ejecutas la aplicación deberias ver lo siguiente:

    Nota: No muestra ningún nombre, porque esto tiene que ser enviado del formulario, y puedes probar cambiando el la propiedad action del formulario(view/viewCustomer).

    Si recuerdas nosotros comentamos la entrada de ruta por defecto(default), vamos a entender qué significa exactamente ese código.
    “{controller}/{action}/{id}” define este que la URL será automáticamente llamado con la convención Controlador(nombre/función) accion (nombre/valor). si tienes una clase controlador con Customer y función acción como Search entonces el URL será estructurada automáticamente como htt://www.maninformatic.com/Customer/Search.

    Lab 8: Validando y asignando valores por defecto a URLs de MVC
    MVC tiene que ver con la acción que se produce a través de la URL y los datos para esas acciones también es proporcionado por la URL.

    Seria bueno si pudiéramos validar los datos que se transmiten a través de estas URL de MVC.

    Por ejemplo vamos a considerar la URL MVC http://localhost/Customer/ViewCustomer si quieres ver el detalle para el código del customer 1001, necesitas ingresar

    http://localhost/Customer/ViewCustomer/1001.

    El código de Customer es un número natural. En otras palabras, cualquier persona que ingrese una URL MVC como http://localhost/Customer/ViewCustomer/Shiv es inválido. El framework MVC provee un mecanismo de validación por el cual podemos comprobar en la propia URL si el dato es apropiado. En este laboratorio veremos cómo validar datos el cual es ingresado en la URL MVC.

    Paso 1: Creando un simple modelo Customer.
    En este primer paso vamos a trabajar con nuestra simple clase modelo Customer ya creada en los pasos anteriores.

    Paso 2: Creando la clase controlador
    En el siguiente paso vamos a utilizar la clase controlador Customer ya creada en pasos anteriores agregando una colección de Customers en el constructor.

    El controlador tiene una simple función DisplayCustomer el cual muestra los clientes usando el valor ID. Esta función toma el valor Id y encuentra en la colección customer.

    Si miras en la función DisplayCustomer esta toma un valor id el cual es numérico. Deberíamos tomar como una validación el campo ID el cual indica lo siguiente:

    • Id debería siempre ser numérico
    • Este debería ser entre 0 y 99
    Paso 3: Aplicando Validación usando regex en la ruta MVC
    La validación descrito en el paso 2 puede ser logrado aplicando expresiones regulares en el mapeo de ruta(MapRoute). Si vamos al archivo RouteConfig.cs y vemos la función maproute., la entrada a esta función es el constraint como se muestra es la figura de abajo.


    En este orden para acomodar la validación necesitamos especificar el regex constraint es decir ‘\d{1,2}’ en la función maproute como se muestra abajo. ‘\d{1,2}’ en regex significa que la entrada debería ser numérico y ser un máximo de 1 o 2 es decir entre 0 y 99.

    Puedes especificar los valores por defecto diciendo id=0 como se muestra en el código de abajo. En el caso de que ID no este especificado este tomara el valor 0 por defecto.

    Paso 4: Probando si esto trabaja

    Ahora que estamos haciendo la validación usando la función maproute, es tiempo de probar si esta validación trabaja. La primera prueba tenemos que especificar 1 y veremos que el controlador es correcto y la data es mostrada.

    Si especificamos un valor mayor a 99, deberíamos obtener un error como se muestra abajo. Por favor note que el error es confuso pero es el efecto de la validación regex el cual especifica la función maproute.

    El punto más importante a notar es que esta validación se ejecuta antes que la solicitud a la función del controlador.

    Lab 9: Entendiendo URLs salientes en MVC

    Introducción
    Cuando hablamos de aplicaciones web, los usuarios finales estarían como navegando de una página a otra página. Como desarrollo simple primeramente estarías pensando en dar justo los nombres de la aginas como se muestra en la figura de abajo.

    Por ejemplo si quieres ir y mostrar de home.aspx a about.aspx darás el enlace al nombre de la página y las cosas deberían ser bien.

    Pero haciendo esto estas violando los principios de MVC. Los principios MVC dicen que la llamada debería primeramente llegar al controlador, pero especificando <a href=”home.aspx” a> la primera llamada es a la vista. Este inconveniente es completamente lógica del controlador y tu arquitectura MVC falla.

    Lo ideal es que las acciones deberían direccionar a las páginas. Los enlaces deberían tener acciones en la etiqueta anchor(<a>) y no nombres de páginas es decir nombres de vistas.

    Paso 1: Creando el controlador para las vistas
    Definimos las acciones que invocaran estas vistas. En el siguiente codigo tenemos definido tres acciones: GotoHome( esta invoca a la vista Home), AboutUs(Este invoca a la vista about), y SeeProduct(Este invoca a la vista product).

    Paso 2: Creando vistas
    Ahora vamos a crear las vistas para los tres métodos definidos en el controlador Site(About, Home, Product).



    Ahora vamos a crear una simple navegación entre estas simples páginas como se muestra abajo. De la vista Home nosotros estaríamos navegando a las vistas About y Product. De las vistas About y Product estaríamos navegando atrasa la vista Home.

    Paso 3: proveyendo acciones en los link.
    Para invocar las acciones relacionadas a las vistas necesitamos especificar las acciones en la etiqueta anchor como se muestra en el siguiente código.

    El código de arriba fue para la vista Product, pues hacer lo mismo para las vistas About y Home.

    Para la Vista Home:

    Para la vista About:

    Paso 4: Disfrutando su navegación
    Antes de probar la navegación, es necesario modificar el mapeo de ruta modificado el los laboratorios anteriores. Asi vamos al archivo RouteConfig.cs. y lo dejamos con en un inicio:

    Ahora si tienes especificado las acciones dentro el enlace, navegas entre las paginas Home, about y product.

    Mientras navegas puedes ver como el URL son dirigidos a las acciones mas que a los nombres de las paginas como home.aspx, aboutus.aspx el cual viola completamente los principios MVC.

    ¿Qué hay para el tercer día?
    Es la tercera sesión, hablaremos acerca de vistas parciales, validación usando notaciones de data, Razor(MVC4), Autenticación avanzada en MVC, Autenticación de formularios en MVC y mucho más. Los siguientes laboratorios podrían ser mucho más avanzados comparados al segundo día.