none
validaion RRS feed

  • Pregunta

  • hola foro :

    tengo la siguiente inquietud:

    Tengo un proyecto mvc 4.5 con  angular tengo que hacer Required  (con el atributo requiered en la clase) de un campo u otros segun la seleccion de un combo Categoria. 

    Si selecciono el combo categoria completo, es obligatorio calle y altura  (que pinte de rojo al presionar boton guardar sobre los  campo requeridos)y si  selecciono categoria simple marque como  obligatorio campo coordenadasx e y , y no calle y altura.

    Ahora  hace visible por javascript calle y altura y esconde cordenadas y viceversa , segun seleccion combo , peor no valida en la pantalla.

    En el viewmodel tengo la validacion asi , el tema es que no aparece el error en la pantalla al guardar del cliente
    solo lo veo en la consola del navegador. el error que tira el view model . ¿Es  posible de agregar un atributo requiered en funcion del valor del combo seleccionado?

    El codigo viewmdoel 

    public class Persona : IValidatableObject {
        public Int32 UserID { get; set; }
        [Required] 
        public string Nombre { get; set; }
        public id Categoria { get; set; }    

    // TODO :agregar atributo que me haga requiered si categoria = 1

       public id calle {get;set}
        public int altura {get;set}
        public decimal  coordenadasX{get;set}
        public decimal  coordenadasY{get;set}

        public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) {
            //hago validacion

             if (String.IsNullOrEmpty(calle))
                   validar altura
                ......lanzar validacion.

            return new List<ValidationResult>();
        }
    }
    y en el  controller hago asi 

    public ActionResult Guardar(Persona persona) {
        if (ModelState.IsValid) {
        }
    }


    Gracias

             
    jueves, 6 de octubre de 2016 3:33

Respuestas

  • hola

    >>si uso la validcacion mvc de lado server con Ivalidation podria funcionar

    con angular no

    >>ver de usar el atributo requeried de dataAnotation tampoco fucionaria ?

    no, no funciona

    tienes que implementar las validaciones usando las tecnicas de angular no de asp.net mvc


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Inovador2015 jueves, 6 de octubre de 2016 17:47
    jueves, 6 de octubre de 2016 15:29

Todas las respuestas

  • hola

    Pero estas usando AngularJS, las validaciones que definas como atributo no aplican ya que el post lo realizas por $http no hay un post a un action que realice el submit de la pagina

    deberias validar usando las tecnicas de angular

    ngMessages

    se valida desde el cliente

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 6 de octubre de 2016 13:00
  • gracias leandro , 

    es un popup que al presionar  guardar desde un factory por ajax llama  a la web api que es el controller api que tiene el metodo guardar 

    ActionResult Guardar(Persona persona) {

    Lo que no entiendo el atributo requiered de la clasegenera la validacion por js con query en el cliente , no existe un requieredif o hacer algo asi que me  genere el codigo en el cliente.

    o tengo que aplicar ngMessages?

    Gracias.

    jueves, 6 de octubre de 2016 13:30
  • pero estas usando angular ?

    si es asi esta claro que debes validar en la view he impedir que se invoque el $http del service o factory si es que el form es invalido

    las validaciones de asp.net mvc no aplican con angular

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 6 de octubre de 2016 13:36
  • gracias leandro, ok y si uso la validcacion mvc de lado server con Ivalidation podria funcionar 

    y del lado del cliente  ver de usar el atributo requeried de dataAnotation tampoco fucionaria ? y dejo de lado la validacion de angular.

    gracias


    jueves, 6 de octubre de 2016 14:25
  • hola

    >>si uso la validcacion mvc de lado server con Ivalidation podria funcionar

    con angular no

    >>ver de usar el atributo requeried de dataAnotation tampoco fucionaria ?

    no, no funciona

    tienes que implementar las validaciones usando las tecnicas de angular no de asp.net mvc


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Inovador2015 jueves, 6 de octubre de 2016 17:47
    jueves, 6 de octubre de 2016 15:29