none
Cómo editar usuarios en ASP.NET MVC RRS feed

  • Pregunta

  • Hola amigos, saludos.

    Estoy desarrollando un proyecto en ASP.NET con MVC usuando la autenticación de usuarios que ya trae por defecto.

    He logrado realizar la vista para mostrar todos los usuarios registrados en el sistema; pero ahora deseo EDITARLOS, al momento de seleccionar el usuario mediante un link de editar, me mande a la vista con los datos de ese usuario y los pueda editar.

    Entiendo que debo tener un ActionResult llamado Editar en el controlador correspondiente y luego tener tambien la vista de Editar. Lo que no sé es lo que lleve ese ActionResult y esa Vista de Editar.

    De antemano muchas gracias.

    viernes, 23 de febrero de 2018 17:29

Todas las respuestas

  • Hola JuanPaz2018

    Con respecto a tu consulta, ¿podrías por favor colocar tu avance, ya sea código y/o form? esto es con el fin de que los colaboradores del foro puedan comprender mejor tu consulta y trabajar en una solución pronta.

    Quedamos al pendiente de cualquier comentario de tu parte.

    Saludos Cordiales.

    Gracias por usar los foros de MSDN.

    Pablo Rubio
     _____

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    domingo, 25 de febrero de 2018 5:54
    Moderador
  • hola

    >>Lo que no sé es lo que lleve ese ActionResult y esa Vista de Editar.

    el actionresult deberias retornar la view de edicion

    [Get]
    public ActionResult Editar(int usuarioId){
      
       //aqui obtienes el usuario en base al id
       var model = ....;
    
       return View(model);
    
    }

    la idea es que la entidad que obtengas la uses como model de la view

    lo que no queda claro es si usas asp.net membership o si es Identity, porque los modelos cambian

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 26 de febrero de 2018 14:10
  • Buenas Leandro uso IDENTITY.

    Creé un controlador de la Clase Account Controller, para poder VER, EDITAR Y ELIMINAR los usuarios registrados en el sistema.

    Al llamar a una de estar vistas me dá este error.

    'No se admiten varios conjuntos de objetos por tipo. Los conjuntos de objetos 'ApplicationUsers' y 'Users' pueden contener instancias de tipo 'EJEMPLO.Models.ApplicationUser'.'

    lunes, 26 de febrero de 2018 14:40
  • public class ApplicationUsersController : Controller
        {
            private ApplicationDbContext db = new ApplicationDbContext();
    
            // GET: ApplicationUsers
            public async Task<ActionResult> Index()
            {
                return View(await db.ApplicationUsers.ToListAsync());
            }
    
            // GET: ApplicationUsers/Details/5
            public async Task<ActionResult> Details(string id)
            {
                if (id == null)
                {
                    return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                }
                ApplicationUser applicationUser = await db.ApplicationUsers.FindAsync(id);
                if (applicationUser == null)
                {
                    return HttpNotFound();
                }
                return View(applicationUser);
            }
    
            // GET: ApplicationUsers/Create
            public ActionResult Create()
            {
                return View();
            }
    
            // POST: ApplicationUsers/Create
            // Para protegerse de ataques de publicación excesiva, habilite las propiedades específicas a las que desea enlazarse. Para obtener 
            // más información vea https://go.microsoft.com/fwlink/?LinkId=317598.
            [HttpPost]
            [ValidateAntiForgeryToken]
            public async Task<ActionResult> Create([Bind(Include = "Id,NombreUsuario,Estado,IdEmpleado,IdGrupo,Email,EmailConfirmed,PasswordHash,SecurityStamp,PhoneNumber,PhoneNumberConfirmed,TwoFactorEnabled,LockoutEndDateUtc,LockoutEnabled,AccessFailedCount,UserName")] ApplicationUser applicationUser)
            {
                if (ModelState.IsValid)
                {
                    db.ApplicationUsers.Add(applicationUser);
                    await db.SaveChangesAsync();
                    return RedirectToAction("Index");
                }
    
                return View(applicationUser);
            }
    
            // GET: ApplicationUsers/Edit/5
            public async Task<ActionResult> Edit(string id)
            {
                if (id == null)
                {
                    return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                }
                ApplicationUser applicationUser = await db.ApplicationUsers.FindAsync(id);
                if (applicationUser == null)
                {
                    return HttpNotFound();
                }
                return View(applicationUser);
            }
    
            // POST: ApplicationUsers/Edit/5
            // Para protegerse de ataques de publicación excesiva, habilite las propiedades específicas a las que desea enlazarse. Para obtener 
            // más información vea https://go.microsoft.com/fwlink/?LinkId=317598.
            [HttpPost]
            [ValidateAntiForgeryToken]
            public async Task<ActionResult> Edit([Bind(Include = "Id,NombreUsuario,Estado,IdEmpleado,IdGrupo,Email,EmailConfirmed,PasswordHash,SecurityStamp,PhoneNumber,PhoneNumberConfirmed,TwoFactorEnabled,LockoutEndDateUtc,LockoutEnabled,AccessFailedCount,UserName")] ApplicationUser applicationUser)
            {
                if (ModelState.IsValid)
                {
                    db.Entry(applicationUser).State = EntityState.Modified;
                    await db.SaveChangesAsync();
                    return RedirectToAction("Index");
                }
                return View(applicationUser);
            }
    
            // GET: ApplicationUsers/Delete/5
            public async Task<ActionResult> Delete(string id)
            {
                if (id == null)
                {
                    return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                }
                ApplicationUser applicationUser = await db.ApplicationUsers.FindAsync(id);
                if (applicationUser == null)
                {
                    return HttpNotFound();
                }
                return View(applicationUser);
            }
    
            // POST: ApplicationUsers/Delete/5
            [HttpPost, ActionName("Delete")]
            [ValidateAntiForgeryToken]
            public async Task<ActionResult> DeleteConfirmed(string id)
            {
                ApplicationUser applicationUser = await db.ApplicationUsers.FindAsync(id);
                db.ApplicationUsers.Remove(applicationUser);
                await db.SaveChangesAsync();
                return RedirectToAction("Index");
            }
    
            protected override void Dispose(bool disposing)
            {
                if (disposing)
                {
                    db.Dispose();
                }
                base.Dispose(disposing);
            }
        }

    lunes, 26 de febrero de 2018 14:42
  • Cuando ejecuto la vista del INDEX para llamar la lista de usuarios me dá el error antes mencionado me lo remarca aquí:

    public async Task<ActionResult> Index()
            {
                return View(await db.ApplicationUsers.ToListAsync());
            }


    • Editado MaxLuna lunes, 26 de febrero de 2018 14:45
    lunes, 26 de febrero de 2018 14:44