SlideShare uma empresa Scribd logo
1 de 18
Jesus Angulo
MCTS & MSP
Facebook.com/jesuslink2514
Twitter.com/jesulink2514
Agenda
5. ViewModels
5.1 Que es un ViewModel
5.2 Propósito de un ViewModel
5.3 Representando entrada del Usuario
6. Validación
6.1 Validación lado del Servidor
6.2 Validación lado del Cliente
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.
ViewModels
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.
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.

[Range]
[Required]
[Remote]
Data Annotations Attributes
Data Annotations

Descripción

Compare

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

Remote

Usa 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.

Range

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

RegularExpression

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

StringLength

Especifica el numero máximo de caracteres que son permitidos
en el campo.
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
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/CursoMV
C4
Gracias ! Hasta el próximo capítulo
/jesulink2514
/jesulink2514

Domingo 5 de Enero , Ajax en
ASP.NET MVC y Seguridad

Mais conteúdo relacionado

Mais procurados

7. Creacion De Controles De Usuario
7.  Creacion De Controles De Usuario7.  Creacion De Controles De Usuario
7. Creacion De Controles De Usuario
guest3cf6ff
 
6. Validando Las Entradas De Usuario
6.  Validando Las Entradas De Usuario6.  Validando Las Entradas De Usuario
6. Validando Las Entradas De Usuario
guest3cf6ff
 
6. validando las entradas de usuario
6.  validando las entradas de usuario6.  validando las entradas de usuario
6. validando las entradas de usuario
Jaime Acurio
 
Validación de campos para bd taller
Validación de campos para bd tallerValidación de campos para bd taller
Validación de campos para bd taller
jpalencia
 

Mais procurados (15)

Taller de Angular JS: La solución tecnológica perfecta
Taller de Angular JS: La solución tecnológica perfectaTaller de Angular JS: La solución tecnológica perfecta
Taller de Angular JS: La solución tecnológica perfecta
 
6.angular js
6.angular js6.angular js
6.angular js
 
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
 
Curso AngularJS - 1. introducción
Curso AngularJS - 1. introducciónCurso AngularJS - 1. introducción
Curso AngularJS - 1. introducción
 
Curso AngularJS - 6. formularios
Curso AngularJS - 6. formulariosCurso AngularJS - 6. formularios
Curso AngularJS - 6. formularios
 
ASP .NET MVC: Desarrollo web con el patrón MVC
ASP .NET MVC: Desarrollo web con el patrón MVCASP .NET MVC: Desarrollo web con el patrón MVC
ASP .NET MVC: Desarrollo web con el patrón MVC
 
7. Creacion De Controles De Usuario
7.  Creacion De Controles De Usuario7.  Creacion De Controles De Usuario
7. Creacion De Controles De Usuario
 
Validación de formularios
Validación de formulariosValidación de formularios
Validación de formularios
 
6. Validando Las Entradas De Usuario
6.  Validando Las Entradas De Usuario6.  Validando Las Entradas De Usuario
6. Validando Las Entradas De Usuario
 
Mvc
MvcMvc
Mvc
 
6. validando las entradas de usuario
6.  validando las entradas de usuario6.  validando las entradas de usuario
6. validando las entradas de usuario
 
Javascript + Angular Sesion 3
Javascript + Angular Sesion 3Javascript + Angular Sesion 3
Javascript + Angular Sesion 3
 
Validación de campos para bd taller
Validación de campos para bd tallerValidación de campos para bd taller
Validación de campos para bd taller
 
ASP.NET MVC - Introducción a ASP.NET MVC
ASP.NET MVC - Introducción a ASP.NET MVCASP.NET MVC - Introducción a ASP.NET MVC
ASP.NET MVC - Introducción a ASP.NET MVC
 
Asegúr@IT III - Ataques SQL Injection masivos
Asegúr@IT III - Ataques SQL Injection masivosAsegúr@IT III - Ataques SQL Injection masivos
Asegúr@IT III - Ataques SQL Injection masivos
 

Destaque

Tarabajo formal de las redes sociales
Tarabajo formal de las redes socialesTarabajo formal de las redes sociales
Tarabajo formal de las redes sociales
vjgaby
 
Psu género lírico 2011
Psu género lírico 2011Psu género lírico 2011
Psu género lírico 2011
calulara
 
Publicidad síntesis
Publicidad síntesisPublicidad síntesis
Publicidad síntesis
calulara
 
PASO 4 de los Ocho pasos para el desarrollo de una investigación
PASO 4 de los Ocho pasos para el desarrollo de una investigación PASO 4 de los Ocho pasos para el desarrollo de una investigación
PASO 4 de los Ocho pasos para el desarrollo de una investigación
Sociedad de Grupos Académicos del Dr. Walter López Moreno
 
Guin de podcast bien
Guin de podcast bienGuin de podcast bien
Guin de podcast bien
Angel
 
Emerita Augusta
Emerita AugustaEmerita Augusta
Emerita Augusta
classica
 
Caso procesamiento de nuez
Caso procesamiento de nuezCaso procesamiento de nuez
Caso procesamiento de nuez
Liliana Lopez
 
Escuela laboratorio san ramón
Escuela laboratorio san ramónEscuela laboratorio san ramón
Escuela laboratorio san ramón
Rocío Goyenaga
 
El lenguaje de la publicidad
El lenguaje de la publicidadEl lenguaje de la publicidad
El lenguaje de la publicidad
calulara
 

Destaque (20)

Capitulo 11-12
Capitulo 11-12Capitulo 11-12
Capitulo 11-12
 
Dce2 ejercicios asp.net
Dce2 ejercicios asp.netDce2 ejercicios asp.net
Dce2 ejercicios asp.net
 
Nia 2009
Nia 2009Nia 2009
Nia 2009
 
Tarabajo formal de las redes sociales
Tarabajo formal de las redes socialesTarabajo formal de las redes sociales
Tarabajo formal de las redes sociales
 
Psu género lírico 2011
Psu género lírico 2011Psu género lírico 2011
Psu género lírico 2011
 
Publicidad síntesis
Publicidad síntesisPublicidad síntesis
Publicidad síntesis
 
PASO 4 de los Ocho pasos para el desarrollo de una investigación
PASO 4 de los Ocho pasos para el desarrollo de una investigación PASO 4 de los Ocho pasos para el desarrollo de una investigación
PASO 4 de los Ocho pasos para el desarrollo de una investigación
 
Quepersonaje
QuepersonajeQuepersonaje
Quepersonaje
 
Guin de podcast bien
Guin de podcast bienGuin de podcast bien
Guin de podcast bien
 
Emerita Augusta
Emerita AugustaEmerita Augusta
Emerita Augusta
 
Presentación Rollpix 2011
Presentación Rollpix 2011Presentación Rollpix 2011
Presentación Rollpix 2011
 
Caso procesamiento de nuez
Caso procesamiento de nuezCaso procesamiento de nuez
Caso procesamiento de nuez
 
Clase ii cp
Clase ii cpClase ii cp
Clase ii cp
 
Andalucía
AndalucíaAndalucía
Andalucía
 
Tutorial Corel: Figura 3
Tutorial Corel: Figura 3Tutorial Corel: Figura 3
Tutorial Corel: Figura 3
 
Escuela laboratorio san ramón
Escuela laboratorio san ramónEscuela laboratorio san ramón
Escuela laboratorio san ramón
 
Manualfunciones
ManualfuncionesManualfunciones
Manualfunciones
 
IIN LINE - fitness styling business
IIN LINE - fitness styling businessIIN LINE - fitness styling business
IIN LINE - fitness styling business
 
El lenguaje de la publicidad
El lenguaje de la publicidadEl lenguaje de la publicidad
El lenguaje de la publicidad
 
Clase 5AVA - Liderazgo vs Autoridad
Clase 5AVA - Liderazgo vs AutoridadClase 5AVA - Liderazgo vs Autoridad
Clase 5AVA - Liderazgo vs Autoridad
 

Semelhante a [Curso MVC] ViewModels y Validacion

6. validando las entradas de usuario
6.  validando las entradas de usuario6.  validando las entradas de usuario
6. validando las entradas de usuario
Jaime Acurio
 

Semelhante a [Curso MVC] ViewModels y Validacion (20)

GWT - Una introducción
GWT - Una introducciónGWT - Una introducción
GWT - Una introducción
 
Metadata api en apex
Metadata api en apexMetadata api en apex
Metadata api en apex
 
[Code Camp 2009] ASP.NET MVC a full (Matías Juan Rubí + Jonathan Solarz)
[Code Camp 2009] ASP.NET MVC a full (Matías Juan Rubí + Jonathan Solarz)[Code Camp 2009] ASP.NET MVC a full (Matías Juan Rubí + Jonathan Solarz)
[Code Camp 2009] ASP.NET MVC a full (Matías Juan Rubí + Jonathan Solarz)
 
NET MAUI Terasoft.pptx
NET MAUI Terasoft.pptxNET MAUI Terasoft.pptx
NET MAUI Terasoft.pptx
 
Spring Mvc Final
Spring Mvc FinalSpring Mvc Final
Spring Mvc Final
 
ASP.NET MVC Core
ASP.NET MVC CoreASP.NET MVC Core
ASP.NET MVC Core
 
ASP.NET MVC Core by Eduard Tomàs
ASP.NET MVC Core by Eduard TomàsASP.NET MVC Core by Eduard Tomàs
ASP.NET MVC Core by Eduard Tomàs
 
Trucos y consejos rendimiento Xamarin.Forms
Trucos y consejos rendimiento Xamarin.FormsTrucos y consejos rendimiento Xamarin.Forms
Trucos y consejos rendimiento Xamarin.Forms
 
dotNetMálaga 2017 - Trucos y consejos rendimiento Xamarin.Forms
dotNetMálaga 2017 - Trucos y consejos rendimiento Xamarin.FormsdotNetMálaga 2017 - Trucos y consejos rendimiento Xamarin.Forms
dotNetMálaga 2017 - Trucos y consejos rendimiento Xamarin.Forms
 
Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6
 
6. validando las entradas de usuario
6.  validando las entradas de usuario6.  validando las entradas de usuario
6. validando las entradas de usuario
 
Lp II clase02 - Modelo Vista Controlador
Lp II   clase02 - Modelo Vista ControladorLp II   clase02 - Modelo Vista Controlador
Lp II clase02 - Modelo Vista Controlador
 
Vaadin 8 en BBR Spa
Vaadin 8 en BBR SpaVaadin 8 en BBR Spa
Vaadin 8 en BBR Spa
 
Jquery Hmvc
Jquery HmvcJquery Hmvc
Jquery Hmvc
 
Tech day#7 – especificaciones_ejecutables_y_BDD_con_cucumber_y_selenium
Tech day#7 – especificaciones_ejecutables_y_BDD_con_cucumber_y_seleniumTech day#7 – especificaciones_ejecutables_y_BDD_con_cucumber_y_selenium
Tech day#7 – especificaciones_ejecutables_y_BDD_con_cucumber_y_selenium
 
Curso Fundeweb2 para java desde cero a experto.ppt
Curso Fundeweb2 para java desde cero a experto.pptCurso Fundeweb2 para java desde cero a experto.ppt
Curso Fundeweb2 para java desde cero a experto.ppt
 
Health WorldBank 2012
Health WorldBank 2012Health WorldBank 2012
Health WorldBank 2012
 
Gwt IV -mvp
Gwt IV -mvpGwt IV -mvp
Gwt IV -mvp
 
Asp.net mvc
Asp.net mvcAsp.net mvc
Asp.net mvc
 
STOP a la fuga de información: la barrera indispensable de seguridad en SQL S...
STOP a la fuga de información: la barrera indispensable de seguridad en SQL S...STOP a la fuga de información: la barrera indispensable de seguridad en SQL S...
STOP a la fuga de información: la barrera indispensable de seguridad en SQL S...
 

Mais de César Jesús Angulo Gasco

Mais de César Jesús Angulo Gasco (15)

.NET MAUI + Azure AD B2C
.NET MAUI + Azure AD B2C.NET MAUI + Azure AD B2C
.NET MAUI + Azure AD B2C
 
Aplicaciones distribuidas con Dapr
Aplicaciones distribuidas con DaprAplicaciones distribuidas con Dapr
Aplicaciones distribuidas con Dapr
 
.Net core y microservicios
.Net core y microservicios.Net core y microservicios
.Net core y microservicios
 
Escalando tu cluster de Kubernetes con AKS
Escalando tu cluster de Kubernetes con AKSEscalando tu cluster de Kubernetes con AKS
Escalando tu cluster de Kubernetes con AKS
 
Integrando Azure AD B2C con Xamarin.Forms
Integrando Azure AD B2C con Xamarin.FormsIntegrando Azure AD B2C con Xamarin.Forms
Integrando Azure AD B2C con Xamarin.Forms
 
Xamarin.Forms 4.0 Preview
Xamarin.Forms 4.0 PreviewXamarin.Forms 4.0 Preview
Xamarin.Forms 4.0 Preview
 
Novedades en Xamarin.forms.3.0
Novedades en Xamarin.forms.3.0Novedades en Xamarin.forms.3.0
Novedades en Xamarin.forms.3.0
 
Vuelve tu aplicación de Xamarin.Forms súper rápida
Vuelve tu aplicación de Xamarin.Forms súper rápidaVuelve tu aplicación de Xamarin.Forms súper rápida
Vuelve tu aplicación de Xamarin.Forms súper rápida
 
Aplicaciones inteligentes con servicios cognitivos
Aplicaciones inteligentes con servicios cognitivosAplicaciones inteligentes con servicios cognitivos
Aplicaciones inteligentes con servicios cognitivos
 
Notificaciones push con Xamarin.Forms y Azure Functions
Notificaciones push con Xamarin.Forms y Azure FunctionsNotificaciones push con Xamarin.Forms y Azure Functions
Notificaciones push con Xamarin.Forms y Azure Functions
 
Explorando los controles de Xamarin.Forms
Explorando los controles de Xamarin.FormsExplorando los controles de Xamarin.Forms
Explorando los controles de Xamarin.Forms
 
Azure DocumentDB - GlobalAzureBootcamp
Azure DocumentDB - GlobalAzureBootcampAzure DocumentDB - GlobalAzureBootcamp
Azure DocumentDB - GlobalAzureBootcamp
 
01- Introduccion a Knockout - #knockout series
01- Introduccion a Knockout - #knockout series01- Introduccion a Knockout - #knockout series
01- Introduccion a Knockout - #knockout series
 
Machine learning
Machine learningMachine learning
Machine learning
 
Capitulo 09-10
Capitulo 09-10Capitulo 09-10
Capitulo 09-10
 

Último

TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
NadiaMartnez11
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Fernando Solis
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
Wilian24
 

Último (20)

SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
 
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
 
Análisis de los Factores Externos de la Organización.
Análisis de los Factores Externos de la Organización.Análisis de los Factores Externos de la Organización.
Análisis de los Factores Externos de la Organización.
 
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADOTIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
 
Infografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfInfografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdf
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
Sesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdfSesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdf
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
semana 4 9NO Estudios sociales.pptxnnnn
semana 4  9NO Estudios sociales.pptxnnnnsemana 4  9NO Estudios sociales.pptxnnnn
semana 4 9NO Estudios sociales.pptxnnnn
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdf
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdf
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 

[Curso MVC] ViewModels y Validacion

  • 1. Jesus Angulo MCTS & MSP Facebook.com/jesuslink2514 Twitter.com/jesulink2514
  • 2. Agenda 5. ViewModels 5.1 Que es un ViewModel 5.2 Propósito de un ViewModel 5.3 Representando entrada del Usuario 6. Validación 6.1 Validación lado del Servidor 6.2 Validación lado del Cliente
  • 4. Qué es una ViewModel? • Un modelo especifico para una vista en particular. • El Problema de la ambigüedad del “Modelo”
  • 5. 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.
  • 7. 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.
  • 9. Concepto Clave en Validación Nunca confiar en la entrada del Usuario (query string, cookies, formdata,etc)
  • 10. 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. [Range] [Required] [Remote]
  • 11. Data Annotations Attributes Data Annotations Descripción Compare Compara el valor de dos propiedades del modelo para verificar que sean iguales. Remote Usa 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. Range Especifica un rango numérico para los valores de un campo. RegularExpression Especifica que un campo debe encajar con la expresión regular especificada. StringLength Especifica el numero máximo de caracteres que son permitidos en el campo.
  • 13. 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.
  • 14. Validación Lado Cliente <appSettings> <add key="ClientValidationEnabled" value="true"/> <add key="UnobtrusiveJavaScriptEnabled" value="true"/> </appSettings> @{Html.EnableClientValidation();} @{Html.EnableUnobtrusiveJavaScript();} @Scripts.Render(“~/bundles/jqueryval”)
  • 16. 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.
  • 18. Gracias ! Hasta el próximo capítulo /jesulink2514 /jesulink2514 Domingo 5 de Enero , Ajax en ASP.NET MVC y Seguridad