none
Validar usuario existente en base de datos con MVC 4 RRS feed

  • Pregunta

  • Buenas amigos, tengo un problema, no he podido encontrar alguna solución, espero ustedes me puedan ayudar.

    El problema es que necesito registrar un nuevo usuario a una  base de datos y quiero validar si el nombre de usuario ingresado ya existe, esto después de haber terminado de ingresar el nombre en el textbox, o bien al salir de foco de ese textbox validar si existe o no, espero me puedan ayudar con este problema, se los agradecería enormemente.

    Espero y me haya explicado y pueda entender lo que necesito hacer.

    viernes, 2 de mayo de 2014 15:34

Respuestas

  • Si estás usando EditorFor y ValidationMessageFor sobre la caja de texto en la que ingresas el nombre, existe una forma sencilla de agregar la validación que deseas con un DataAnnotation sobre la correspondiente propiedad en el Modelo: Basta con agregar el atributo [Remote(....)] indicando el método que realiza la validación, y agregar dicho método en tu controlador.

    //En el modelo:
    public class Usuario
    {
        [Remote("UsuarioDisponible", "Usuarios")]
        public string Nombre { get; set; }
        //...otras propiedades
    }
    
    //Este es el controlador correspondiente:
    public class UsuariosController : Controller
    {
        public JsonResult UsuarioDisponible(string Nombre)
        {
            return Json(!Existe(Nombre),
                        JsonRequestBehavior.AllowGet);
        }
    }
    //Obviamente, la función "Existe" tienes que programarla
    // de forma que busque en la tabla de la base de datos

    viernes, 2 de mayo de 2014 18:00

Todas las respuestas

  • Si estás usando EditorFor y ValidationMessageFor sobre la caja de texto en la que ingresas el nombre, existe una forma sencilla de agregar la validación que deseas con un DataAnnotation sobre la correspondiente propiedad en el Modelo: Basta con agregar el atributo [Remote(....)] indicando el método que realiza la validación, y agregar dicho método en tu controlador.

    //En el modelo:
    public class Usuario
    {
        [Remote("UsuarioDisponible", "Usuarios")]
        public string Nombre { get; set; }
        //...otras propiedades
    }
    
    //Este es el controlador correspondiente:
    public class UsuariosController : Controller
    {
        public JsonResult UsuarioDisponible(string Nombre)
        {
            return Json(!Existe(Nombre),
                        JsonRequestBehavior.AllowGet);
        }
    }
    //Obviamente, la función "Existe" tienes que programarla
    // de forma que busque en la tabla de la base de datos

    viernes, 2 de mayo de 2014 18:00
  • amigo el editorfor es equivalente a textboxfor?, o independientemente del tipo de control que sea puede funcionar?, y en el remote me imagino se agrega la funcion del controller y el nombre del controller.

    public class Usuario { [Remote("UsuarioDisponible", "Usuarios")] public string Nombre { get; set; } //...otras propiedades }

    Donde usuarioDisponible es el metodo y Usuarios el nombre del controller

    viernes, 2 de mayo de 2014 18:14
  • La diferencia entre el EditorFor y el TextBoxFor es que este último siempre genera un <input type="text"...> mientras que el EditorFor potencialmente podría generar un html distinto, dependiendo de lo que tengas en la carpeta EditorTemplates y de los DataAnnotations con los que decores la propiedad correspondiente. A efectos de validación te da lo mismo.

    http://stackoverflow.com/questions/4826173/differences-between-html-textboxfor-and-html-editorfor-in-mvc-and-razor

    Los parámetros del Remote efectivamente son el nombre de la función y (opcionalmente) el nombre del controlador.

    http://msdn.microsoft.com/en-us/library/system.web.mvc.remoteattribute(v=vs.118).aspx

    viernes, 2 de mayo de 2014 20:32