ASP.NET - Como validar una clase usada en varios formularios que utilizan diferentes campos

 
Vista:

Como validar una clase usada en varios formularios que utilizan diferentes campos

Publicado por John David Suaza (1 intervención) el 24/09/2020 17:58:59
Buenos días, tengo una duda respecto a como validar los datos que necesito para cada formulario.

Quiero realizar una validación de una clase en el controlador, esta tiene mas o menos 20 campos que se utilizan en diferente formularios, entonces no puedo hacer un "ModelState.IsValid" ya que saldrá siempre falso porque no lleno todos los datos del formulario

Tengo 5 formularios diferentes consumiendo esa clase y cada una llena campos diferentes.

O creen que es mejor hacer la validación en la vista de los campos ?

¿Que puedo hacer?

Quedo atento a sus comentarios.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 82
Plata
Ha mantenido su posición en ASP.NET (en relación al último mes)
Gráfica de ASP.NET

Como validar una clase usada en varios formularios que utilizan diferentes campos

Publicado por miguelZarate (31 intervenciones) el 24/09/2020 19:10:20
Que tecnologia estas usando MVC?
Agrega tu validacion actual para sugerir cambios
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 82
Plata
Ha mantenido su posición en ASP.NET (en relación al último mes)
Gráfica de ASP.NET

Como validar una clase usada en varios formularios que utilizan diferentes campos

Publicado por miguelZarate (31 intervenciones) el 24/09/2020 20:08:00
Suponiendo que haces una validacion para cada accion
se puede agregar la validacion manual, no agregues alguna anotacion para ese campo y valida en cada valicion


1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Accion Registrar
if(myModel.Prop1 != myName)
{
    ModelState.AddModelError("Prop1", No coincide con nombre de usuario");
}
// en Otra accion prop1 ==  cadena vacia
if(myModel.Prop1 !=string.Emty)
{
    ModelState.AddModelError("Prop1", ""debe ser una cadena vacia");
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Leonardo Daniel A.
Val: 184
Oro
Ha mantenido su posición en ASP.NET (en relación al último mes)
Gráfica de ASP.NET

Como validar una clase usada en varios formularios que utilizan diferentes campos

Publicado por Leonardo Daniel A. (71 intervenciones) el 24/09/2020 21:06:03
Hola, yo lo hago en mi clase entidad, nunca hago procesos de ningun tipo con datos en el controlador... es MVC, pero esta en capas...

1ra. Es la clase conexion a la b.d.
2da Entidades (clases de datos ligadas a las tablas) uso NPOCO, no entity framework
3ra. Logica de Negocio (donde se llevan a cabo todos los procesos de los datos)
4ta. Aplicacion MVC
proyecto

--- la validacion la hago con jquery en un boton de guardar, necesitas los plugins
jquery.form.min.js
jquery.validate.min.js
jquery.validate.unobtrusive.min.js



Esta es mi entidad de Clientes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
using NPoco;
using System;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
 
namespace Entidades
{
    [TableName("Clientes")]
    [PrimaryKey("Id")]
    public class Cliente
    {
        [Required]
        public Int32 Id { get; set; }
 
        [DisplayName("Start Date")]
        public DateTime FechaAlta { get; set; } = DateTime.Now;
 
        [DisplayName("Name")]
        [Required(ErrorMessage = "Name is required")]
        [StringLength(50, MinimumLength = 5, ErrorMessage = "Name cannot be longer than 50 characters and less than 5 characters")]
        public String Nombre { get; set; }
 
        [DisplayName("Address")]
        [Required(ErrorMessage = "Address is required")]
        [StringLength(30, MinimumLength = 5, ErrorMessage = "Address cannot be longer than 30 characters and less than 5 characters")]
        public String Domicilio { get; set; }
 
        [DisplayName("Zip Code")]
        [StringLength(8, MinimumLength = 0, ErrorMessage = "Zip Code cannot be longer than 8 characters")]
        public String CodPostal { get; set; }
 
        [DisplayName("City")]
        [Required(ErrorMessage = "City is required")]
        public Int32? IdCiudad { get; set; }
 
        [DisplayName("Phone")]
        [StringLength(15, MinimumLength = 0, ErrorMessage = "Phone cannot be longer than 15 characters")]
        public String Telefono { get; set; }
 
        [StringLength(15, MinimumLength = 0, ErrorMessage = "Fax cannot be longer than 15 characters")]
        public String Fax { get; set; }
 
        [DisplayName("Contact")]
        [StringLength(45, MinimumLength = 0, ErrorMessage = "Contact cannot be longer than 45 characters")]
        public String Contacto { get; set; }
 
        [DisplayName("Email")]
        [RegularExpression("^[a-zA-Z0-9_\\.-]+@([a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$", ErrorMessage = "Email is invalid")]
        [StringLength(60, MinimumLength = 0, ErrorMessage = "Email cannot be longer than 60 characters")]
        public String Correo { get; set; }
 
        [DisplayName("Credit Limit")]
        public Decimal LimiteCredito { get; set; } = 0;
 
        public Boolean Status { get; set; } = true;
 
        [Reference(ReferenceType.OneToOne, ColumnName = "IdCiudad", ReferenceMemberName = "Id")]
        public Ciudad Ciudad { get; set; }
    }
}

Este es mi controlador de Clientes
controlador
ResponseModel es una clase auxiliar muy sencilla que regresa un jason


En la vista en la seccion de script, en el boton guardar, hago algo asi

if $('#frm-cliente').valid();{
al hacer el valid., te va a señalar en cada campo que se encuentre alguna validacion que no paso
mandas llamar por ajax el metodo guardar y la pasas los parametros,
}

[b]PARA MAYOR AYUDA.... TE RECOMIENDO EL CURSO " DESARROLLANDO UN PORTAFOLIO PERSONAL " DE EDUARDO PATIÑO, EN UDEMY..... ESTA MUY ECONOMICO Y TE AYUDARA MUCHISIMO, COMO LO HIZO CONMIGO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar