Helpers en ASP.NET MVC.

Slides:



Advertisements
Presentaciones similares
Ihr Logo PHP Parte 4 “manejo de formularios”. Your Logo Formularios  El proceso para el manejo de FORMULARIOS html requiere generalmente dos páginas,
Advertisements

Helpers en ASP.NET MVC3. Introducción Los helpers son una herramienta muy potente para generar nuestro propio código HTML dentro de las vistas. Los helpers.
Introducción a programación web Martin Esses. Formularios HTML se utilizan para pasar datos a un servidor. Un formulario HTML puede contener elementos.
1 Clase 4: primeros programas (2ª parte) iic1102 – introducción a la programación.
Introducción a programación web Martin Esses. Los datos almacenados en las bases de datos normalmente son mostrados en nuestras vistas. Para que nuestras.
Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3.
Introducción a programación web Martin Esses. En las presentaciones anteriores, vimos como enviar datos a un controlador usando POST y como generar formularios.
1 Clase 5: primeros programas (3ª parte) iic1102 – introducción a la programación.
Helpers en ASP.NET MVC3. Introducción Los helpers son una herramienta muy potente para generar nuestro propio código HTML dentro de las vistas. Los helpers.
VISUALBEE. VisualBee es un software que te permite mejorar tus presentaciones mismos viejos en una presentación llena de gráficos de gran alcance. Para.
¿Qué es el theming? Es el proceso de generar html y css a partir de los datos de nuestra aplicación. El diseño de una aplicación web hecha con Drupal lo.
Microsoft Office 2007 Introducción a Access. Una base de datos es una colección de información relacionada entre si y almacenada en una o más computadoras.
Autentificación: Verificar la identidad del usuario Autorización: Permitir o no, acceder a un recurso o realizar una determinada acción en función de.
PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento y constructores.
HTM L (Hyper Text Markup Language). ¿Qué es HTML? Es el lenguaje que permite escribir texto de forma estructurada, y que está compuesto por etiquetas,
Curso RRHH 09A Frente RRHH
Introducción a la Programación Multimedial
Clases y Objetos.
Un poco de lo que se de WORD
Convenciones de nomenclatura y diseño
. Primera Open Class Asignatura: Programación Estructurada Tema:
PROGRAMACIÓN ORIENTADA A OBJETOS
Olimpiadas Chilenas de Informática - Formación
Capítulo 13 Leer archivos JSON con AJAX
Java Script (JS) Prof. Martín Contreras.
Programación Orientada a Eventos
ECLIPSE.
Métodos y parámetros.
Inclusión de asegurados Emisión: Inclusión de asegurados • Deberás enviar un excel con los siguientes campos: Nombre Apellido paterno Apellido.
Manejo de Punteros y objetos en memoria dinámica en C++
Helpers en ASP.NET MVC.
Conceptos básicos de programación
¿Cómo registrarse en Despegar, sitio de hoteles y viajes?
Entra al programa ( y haz clic en regístrarse
Métodos en Java.
Algunas Características de C++ no presentes en C
Introducción a programación web Martin Esses
ALGORITMOS, LENGUAJES Y TECNICAS DE PROGRAMACION
Guía teórica de manejo de estructuras de datos
Curso de programación Visual Chart 6 (2ªEd.)
Introducción a programación web Martin Esses
UNIDAD I EJERCICIOS 1.- Elabore una página en PHP, capaz de realizar la tabla de multiplicar, utilice las herramientas vistas en la unidad I. 2.- Elabore.
BASES DE DATOS con Libreoffice base
Capítulo 4 La API File para manejar archivos
ESTRUCTURAS DE DECISIÓN
Algunas Características de C++ no presentes en C
Agustín J. González ELO-329
Generacion de reportes con Crystal Reports
LÓGICA DE PROGRAMACIÓN
Actividad 3 – Herramienta tareas
NORMALIZACION MsC (c) Esp. Alexis Ovany Torres Ch.
ESTRUCTURA DE UN PROGRAMA SIMPLE EN JAVA
Usando StreamReader y StreamWriter
Expresiones regulares
Formularios HTML.
Registro de Software REALIZADO POR: ANDRÈS BARRETO.
Tema 4 Lenguaje HTML Parte 7.
FAMILIEN WEBGUNEA FAMILIAS Y ALUMNADO.
CC Bases de Datos Otoño Clase 3: Modelo Entidad-Relación (II)
Excel Macros Formularios.
LISTAS PERSONALIZADAS
Proceso de registro y vinculación (Mi Real)
LISTAS PERSONALIZADAS
Empleados actuales del FWISD pueden iniciar la sesión utilizando sus credenciales de Active Directory. Todos los demás usuarios necesitarán crear una cuenta.
CC 1002: Introducción a la Programación Clase 19
Manejo de Punteros y objetos en memoria dinámica en C++
Carlos Manuel Ortega Avila
Guía teórica de manejo de estructuras de datos
UNIVERSIDAD JUÁREZ AUTÓNOMA DE TABASCO Nombres: Isaac Sánchez García Teofilo Martinez Garcia Ricardo Del Carmen Paz López Vanesa Anahí Pérez Lizárraga.
1. CONEXIÓN DE JAVA CON MYSQL ING. JOSÉ VÉLIZ. PASO NO. 1 Después de creada la base de datos debemos ingresar a la aplicación Java y crear un nuevo proyecto,
Transcripción de la presentación:

Helpers en ASP.NET MVC

Introducción Los helpers son una herramienta muy potente para generar nuestro propio código HTML dentro de las vistas. Los helpers nos van a permitir crear campos en un formulario de una manera muy cómoda y relativamente sencilla.

Introducción Lo primero que vamos a ver es como crear un campo HTML para editar (o mostrar) una propiedad específica del model que recibe la vista. Supongamos que tenemos esta clase: public class Trabajador{ public string Nombre { get; set; } public string Apellido { get; set; } public DateTime FechaNacimiento { get; set; } public double Sueldo { get; set; } public bool Activo{ get; set; } }

Introducción Ahora vamos a crear una vista que muestre cuatro campos de texto (para nombre, apellido, fecha de nacimiento y sueldo) y una casilla de verificación para indicar si es fijo o no. Pero en lugar de crear los controles a mano (<input type="xxx">) vamos a usar helpers: @using NombreProyecto.Models @model Trabajador <form method=“post” action=“@Url.Action(“EdicionTrabajador”,”Trabajo”)> Nombre: @Html.TextBoxFor(x=>x.Nombre) <br /> Apellido: @Html.TextBoxFor(x=>x.Apellido) <br /> Fecha Nacimiento: @Html.TextBoxFor(x=>x.FechaNacimiento) <br /> Sueldo: @Html.TextBoxFor(x => x.Sueldo) <br /> Es Activo: @Html.CheckBoxFor(x=>x.Activo) <br /> <input type="submit" value="Enviar"/> </form>

@Html.TextBoxFor(x=>x.Nombre) Helpers Estamos usando los helpers! Html.TextBoxFor que muestra un campo de texto para la propiedad indicada Html.CheckBoxFor que muestra una casilla de verificación para la propiedad indicada Hay un helper por cada control HTML que habitualmente usamos en formularios, como por ejemplo Html.TextAreaFor, Html.LabelFor, Html.DropDownListFor, etc. ¿Cómo se indica a cada helper que propiedad debe renderizar el control? @Html.TextBoxFor(x=>x.Nombre) Con esto logramos que cuando el formulario le envíe la información al ActionMethod del controller esta pueda ser recibido en un objeto de tipo Trabajador.

Helpers El parámetro en forma x=>x.Nombre es una expresión lambda. La ventaja de usar una expresión lambda antes que una cadena (algo como TextBoxFor("Nombre")) es que las expresiones lambda son evaluadas en tiempo de compilación y no de ejecución (si nos equivocamos en el nombre de la propiedad el código no compila). Esto requiere que la vista sea tipada con el tipo de ViewModel (ver en el uso la directiva @model).

Como recibe el controller los datos del form? [HTTPPost] Public ActionResult EdicionTrabajador(Trabajador UnTrabajador) { // Aca puedo hacer lo que quiera con el objeto, por ejemplo: UnTrabajador.Modificar(); // Incluso puedo enviar los datos del objeto a otra vista, de la siguiente manera: Return View(“DetalleTrabajador”,UnTrabajador); } Como mostramos los datos en la vista DetalleTrabajador?

Vista del detalle enviado

Helpers También podemos utilizar un helper para la creación del formulario. @Html.BeginForm([Action], [Controller], [Method]) { <!-- Codigo del formulario --> } Al usar BeginForm() debemos tener un poco más de cuidado con Razor. La razón es que Razor interpreta que debe ejecutar el código que se encuentra entre las llaves. Por supuesto, Razor es lo suficientemente inteligente para "ignorar" el código HTML (como <br />) pero no el texto plano. Es decir, Razor intentará ejecutar el código Apellido: (o Es Activo:) que un código totalmente inválido en C#, de ahí el error. Para eso podemos reemplazarlo utilizando Html.Label

Esto en realidad, más que una validación, es un manejo de errores. Helpers ¿Y qué ventajas obtenemos utilizando Helpers? Siguiendo la clase creada anteriormente, al ejecutarlo verán que los helpers también manejan los mensajes de error: El sistema nos mostrará un error si FechaNacimiento o Sueldo están vacíos. ¿Y por qué esos dos campos y no los otros? Muy sencillo: porque esos dos campos están declarados como DateTime y double que son tipos que requieren un valor y por lo tanto nunca pueden valer nulo o vacío. Esto en realidad, más que una validación, es un manejo de errores.

Helpers – Validación de datos ModelState: El ModelState es un objeto, gestionado por el framework de ASP.NET MVC que indica cual es el estado del modelo.  Contiene una propiedad llamada IsValid que nos indica si el modelo es correcto, es decir, si no hay errores. [HttpPost] public ActionResult EdicionTrabajador(Trabajador UnTrabajador) { if (!ModelState.IsValid) {                 return View(UnTrabajador);       }       else {       return View(“DetalleTrabajador”);       }  }

Helpers – Validación de datos Que el ModelState no sea válido significa que alguna entrada del usuario no es correcta, por lo tanto devolvemos de nuevo la vista que contiene el formulario con los datos. Si el ModelState es válido eso significa que las entradas del usuario son correctas por lo que procedemos a realizar la acción que querramos.

Helpers Hay muchos más casos en los que nos puede interesar decirle al usuario que los datos ingresados no son validos : Por ejemplo: Campos Obligatorios Cadenas con un determinado formato (un email) Dos campos que deben ser iguales (contraseña y repetir contraseña) Valores que deben estar dentro de un determinado rango (puntuación del 1 al 10) ¿COMO HACEMOS?

Helpers - Validación de datos - DataAnnotations Hasta ahora vimos el mecanismo que utiliza el framework de MVC para indicarnos que hay algún error. Ahora vamos a ver cómo podemos añadir nuestras validaciones a este mecanismo. Aunque ASP.NET MVC es muy flexible en este punto, vamos a ver la forma más común de hacerlo: usando DataAnnotations. (necesitamos hacer un using con System.ComponentModel.DataAnnotations y otro con System.Web.Mvc) Para añadir validaciones usando DataAnnotations simplemente debemos completar en la propiedad que deseemos, alguno de los atributos que veremos a continuación:

Helpers – Validación de datos Por ejemplo, si tenemos la siguiente Clase: public class Trabajador     {             public string Nombre { get; set; }             public int Edad { get; set; }     } Podemos hacer que Nombre sea obligatorio agregando el atributo [Required]: public class Trabajador     { [Required]             public string Nombre { get; set; }             public int Edad { get; set; }     }

Helpers – Validación de datos ¡Y listos! Solo con añadir el atributo Required, el framework sabe que el Nombre es requerido y si el usuario no lo ingresa se mostrará un error: (ModelState devolverá false en su propiedad IsValid)

Helpers – Validación de datos ¿Y podemos mostrar un mensaje de error para explicarle al usuario que ha completado incorrectamente? Pues si, con un helper del que todavía no habíamos hablado:  Html.ValidationMessageFor Ej: @Html.Label(“Nombre”) @Html.TextBoxFor(x=>x.Nombre) @Html.ValidationMessageFor(x => x.Nombre) <br />

Helpers – Validación de datos ¿Y podemos cambiar el texto del mensaje de error? El mensaje que vemos es el que genera el framework por defecto, pero podemos modificarlo por uno nuestro usando la propiedad ErrorMessage que tienen todos los atributos de validación: Lo hacemos al crear la validación en la clase public class Trabajador { [Required(ErrorMessage = "¡Aquí todo el mundo tiene un nombre!")]           public string Nombre { get; set; }           public int Edad { get; set; } }

Helpers – Validación de datos Hay varios atributos para distintas validaciones y todos se usan igual: anticipando a las propiedades. Si tu aplicación exige que sus usuarios tengan entre 18 y 65 años, se puede usar Range: Ej: [Range(18,65)] StringLength: Para limitar el número de caracteres de un campo texto (p.ej. el password debe tener entre 6 y 15 caracteres). Ej: [StringLength(15, MinimumLength = 6)] Compare: Para que dos campos tengan el mismo valor (p.ej. password y repetir password) Ej: [Compare(CompareField = Password)] RegularExpression: Para validar contra una expresión regular

Helpers – Validación de datos public class Trabajador { [Required(ErrorMessage = “Nada de anónimos. ¡Aquí todo el mundo tiene un nombre!")]  public string Nombre { get; set; }  [Range(18,65, ErrorMessage = “Aca hay xxx, nada de menores de edad ni de jubilados")] public int Edad { get; set; } [StringLength(15, MinimumLength = 6, ErrorMessage = “Uff, entre 6 y 15 caracteres papá!")] public string password; }