Anexsoft | Blog y dictado de cursos de Tecnología

En este encontrarás tutoriales de tecnología como PHP, ASP.NET MVC, Front-End, entre otros y cursos exigentes de modalidad online que te ayudarán a crecer profesionalmente.

ASP.NET MVC: Validando un formulario y eliminando registros
Actualizado el 21 Enero, 2016 y leído 6,639 veces
Calificación: 10.00 / 10

ASP.NET MVC: Validando un formulario y eliminando registros

Anexsoft

Validación de formulario

El objetivo de esta entradano es detallar los tipos de validaciones que podemos hacer con los Data Annotations, sino, como implementarlo desde nuestro modelo y mostrar los mensajes de validación en los formularios usando ASP.NET MVC. Por lo tanto, para ver tipos de validaciones y validaciones personalizadas, creo yo que demanda una nueva entrada.

Validando nuestro modelo

Para comenzar a validar nuestro formulario previamente debemos asignar Data Annotations a nuestro modelo actual, para que al momento de procesar la información ya sea para actualizar/eliminar un registro este lo valide previamente.

Entonces, tenemos nuestro siguiente modelo y anotaciones:

[Table("Alumno")]
public partial class Alumno
{
    public Alumno()
    {
        Cursos = new List<Curso>();
    }

    public int id { get; set; }

    [Required(ErrorMessage = "Debe ingresar un nombre")]
    [StringLength(50)]
    public string Nombre { get; set; }

    [Required(ErrorMessage = "Debe ingresar un apellido")]
    [StringLength(100)]
    public string Apellido { get; set; }

El Entity Framework Tools nos va ayudar en este aspecto, por eso creamos una buena base de datos para que al momento generar las clases de nuestro modelo, este agregue las Data Annotations necesarias.

 

Agregando los mensajes a nuestro formulario

Para agregar los mensajes de nuestras anotaciones debemos llamar a la clase Html y al método ValidationMessageFor, este debemos ubicarlo donde nos gustaría visualizarlo, yo en mi caso lo he agregado debajo de los controles y adicionalmente le he puesto una clase de bootstrap para mostrar el texto con fondo rojo y letras blanca "label label-danger".

<div class="panel panel-default">
    <div class="panel-heading">Información personal</div>
    <div class="panel-body">
    <div class="form-group">
        @Html.LabelFor(x => x.Nombre)
        @Html.TextBoxFor(x => x.Nombre, new { @class = "form-control" })
        @Html.ValidationMessageFor(x => x.Nombre, null, new { @class = "label label-danger" })
    </div>
    <div class="form-group">
        @Html.LabelFor( x => x.Apellido)
        @Html.TextBoxFor(x => x.Apellido, new { @class = "form-control" })
        @Html.ValidationMessageFor(x => x.Apellido, null, new { @class = "label label-danger" })
    </div>
    </div>
</div>

 

Validando desde el controlador

En nuestra acción Guardar debemos preguntar si el modelo actual es válido, del caso contrario volveremos a cargar la vista del formulario para que los mensajes de validación sean mostrados.

public ActionResult Guardar(Alumno model, int[] cursos = null) 
{
    if (cursos != null)
    {
        foreach (var c in cursos)
            model.Cursos.Add(new Curso { id = c });
    }
    else 
    {
        ModelState.AddModelError("cursos", "Debe seleccionar por lo menos un curso");
    }

    if (ModelState.IsValid)
    {
        model.Guardar();
        return Redirect("~/home/crud/" + model.id);
    }
    else 
    {
        ViewBag.Cursos = curso.Todo();
        return View("~/views/home/crud.cshtml", model);
    }
}

 

Validando que por lo menos se haya elegido un curso

Lo que vamos hacer a continuación es una forma rápida de crear una validación personalizada, para ello vamos a crear en nuestro formulario una validación personalizada definiendo una Key debajo de nuestra lista de cursos a seleccionar.

@Html.ValidationMessage("CursosSeleccionados", new { @class = "label label-danger" })

De esta manera, nuestro formulario ya sabe que debe mostrar alguna información para la Key "CursosSeleccionados", entonces validamos en nuestra acción que se haya seleccionado por lo menos un curso.

if (cursos != null)
{
    foreach (var c in cursos)
        model.Cursos.Add(new Curso { id = c });
}
else 
{
    ModelState.AddModelError("CursosSeleccionados", "Debe seleccionar por lo menos un curso");
}

Por ende, al no pasar esta validación, nuestro mensaje será mostrado en el formulario.

NOTA: en el VIDEO yo he puesto para la validación de cursos la Key "cursos", pero hay un problema ya que tenemos una propiedad llamada Cursos, así que, la solución es agregar otro nombre que no coincida con nuestras propiedades.

 

Eliminando un registro

Hemos agregado a nuestro formulario actual un botón que apunta a una acción llamada Eliminar en la cual le pasamos el ID del registro que queremos remover de la base de datos.

Acción

public ActionResult Eliminar(int id)
{
    alumno.Eliminar(id);
    return Redirect("~/home");
}

Formulario

@if (Model.id > 0)
{
    <a href="~/home/eliminar/@Model.id" class="btn btn-danger">Eliminar</a>
}

Modelo

public void Eliminar(int id)
{
    try
    {
        using (var context = new TestContext())
        {
            context.Entry(new Alumno { id = id }).State = EntityState.Deleted;
            context.SaveChanges();
        }
    }
    catch (Exception e)
    {
        throw new Exception(e.Message);
    }
}

 

Partes:

¡Adquiera ya!

  • Código de fuente de Red Social desarrollada en ASP.NET MVC

    Código de fuente de Red Social desarrollada en ASP.NET MVC
  • Software de Venta e Inventario hecho en PHP y Codeigniter

    Software de Venta e Inventario hecho en PHP y Codeigniter

Últimas publicaciones

Encuesta

¿Sobre qué te gustaría que se hable más?

Síguenos

Estudia con nosotros y crece profesionalmente

Nuestros cursos han sido hecho en base a lo que demanda el mercado hoy en día.
La experiencia obtenida es la de un ambiente laboral.

Anexsoft
© 2017 Anexsoft, blog y cursos online de TI.