[Curso MVC] ViewModels y Validacion

Post on 30-Jun-2015

2.444 views 7 download

Transcript of [Curso MVC] ViewModels y Validacion

ASP.net MVC 4 con C#Jesus AnguloMCTS & MSP Facebook.com/jesuslink2514Twitter.com/jesulink2514

Agenda5. ViewModels5.1 Que es un ViewModel5.2 Propósito de un ViewModel5.3 Representando entrada del Usuario

6. Validación6.1 Validación lado del Servidor6.2 Validación lado del Cliente

¿Qué es un ViewModel?

ViewModels

Qué es una ViewModel?• Un modelo especifico para

una vista en particular.

• El Problema de la ambigüedad del “Modelo”

Propósito de un ViewModel• Reducir la complejidad de

una Vista o Controlador.

• Adaptarse a la entrada de usuario que se requiere y que es diferente a nuestro modelo de dominio.

• Para mapear nuestros modelos y proyectarlos en ViewModels podemos emplear algunas herramientas como AutoMapper.

DEMOViewModels

¿Qué es un ViewModel?

Summary• Un ViewModel es una ‘clase’ de

Modelo que se crea específicamente para una vista.

• Su propósito es simplificar una vista o controlador para adaptar el modelo a la entrada de usuario o a una vista en particular.

• Podemos emplear herramientas como AutoMapper.

Validar la entrada de Usuario

asp.net MVC Validation

Validacion

Concepto Clave en Validación

Nunca confiar en la entrada del Usuario

(query string, cookies, formdata,etc)

Validación en el framework MVC• La Validación en MVC ha

evolucionado a través de las versiones pasando de ser tediosa y complicada a abierta y enfocada al lado cliente también.

• Enfoque centrado en el modelo y validación a través de Data Annotations.

[Required]

[Range]

[Remote]

Data Annotations AttributesData

AnnotationsDescripción

CompareCompara el valor de dos propiedades del modelo para verificar que sean iguales.

RemoteUsa jQuery Validate para llamar a una acción en el Servidor para realizar la validación en el lado Cliente.

Required Especifica que una propiedad es requerida.

RangeEspecifica un rango numérico para los valores de un campo.

RegularExpression

Especifica que un campo debe encajar con la expresión regular especificada.

StringLengthEspecifica el numero máximo de caracteres que son permitidos en el campo.

Validación Lado del Servidor usando DataAnnotations

DEMO

Validación

Metadata• Las anotaciones de datos nos

permiten agregar metadatos a nuestro modelo.

• La Metadata no solo se emplea para validación.

• La Metadata se extrae del Modelo con la ayuda de un MetaDataProvider.

Validación Lado Cliente<appSettings>

<add key="ClientValidationEnabled" value="true"/>

<add key="UnobtrusiveJavaScriptEnabled" value="true"/> </appSettings>

@{Html.EnableClientValidation();} @{Html.EnableUnobtrusiveJavaScript();}

@Scripts.Render(“~/bundles/jqueryval”)

Validación Lado del Cliente usando jQuery Validation

DEMO

Validación

Summary• Los DataAnotations son una manera de especificar

metada en nuestro modelo que usamos para saber como representar la entrada del usuario hasta para validarla.

• Esta integrado en el framework por defecto el uso de jQuery Validation para la validación de lado del cliente.

• Debemos desconfiar siempre de la entrada del usuario y nunca suponer que el usuario ingresara los datos correctos.

• La validación de lado del servidor es nuestra ultima línea de Defensa.

https://github.com/jesulink2514/CursoMVC4

© 2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Gracias ! Hasta el próximo capítulo

/jesulink2514

/jesulink2514Domingo 5 de Enero , Ajax en ASP.NET MVC y

Seguridad