How to edit a user in ASP.NET Identity

前端 未结 2 628
耶瑟儿~
耶瑟儿~ 2020-12-29 17:41

I am new to the ASP.NET Identity framework and I am trying to do some things. What I want to do is to edit the user who has already register and then update the user details

2条回答
  •  感动是毒
    2020-12-29 18:23

    Create a dbcontext object "context" and you also need to create a model class "UserEdit" and include those fields in it which you wants to edit.

    private ApplicationDbContext context = new ApplicationDbContext();
    // To view the List of User 
     public ActionResult ListUsers ()
            {
                return View(context.Users.ToList());
            }
    
    public ActionResult EditUser(string email)
            {
                ApplicationUser appUser = new ApplicationUser();
                appUser = UserManager.FindByEmail(email);
                UserEdit user = new UserEdit();
                user.Address = appUser.Address;
                user.FirstName = appUser.FirstName;
                user.LastName = appUser.LastName;
                user.EmailConfirmed = appUser.EmailConfirmed;
                user.Mobile = appUser.Mobile;
                user.City = appUser.City;
    
    
                return View(user);
            }
    
        [HttpPost]
        public async Task EditUser(UserEdit model)
        {
    
    
            if (!ModelState.IsValid)
            {
                return View(model);
            }
            var store = new UserStore(new ApplicationDbContext());
            var manager = new UserManager(store);
            var currentUser = manager.FindByEmail(model.Email);
            currentUser.FirstName = model.FirstName;
            currentUser.LastName = model.LastName;
            currentUser.Mobile = model.Mobile;
            currentUser.Address = model.Address;
            currentUser.City = model.City;
            currentUser.EmailConfirmed = model.EmailConfirmed;
            await manager.UpdateAsync(currentUser);
            var ctx = store.Context;
            ctx.SaveChanges();
            TempData["msg"] = "Profile Changes Saved !";
            return RedirectToAction("ListUser");
        }
    

    // for deleting a user

    public ActionResult DeleteUser(string id)
            {
                if (id == null)
                {
                    return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                }
                var user = context.Users.Find(id);
                if (user == null)
                {
                    return HttpNotFound();
                }
                return View(context.Users.Find(id));
            }
    
    
            public async Task UserDeleteConfirmed(string id)
            {
                var user = await UserManager.FindByIdAsync(id);
    
                var result = await UserManager.DeleteAsync(user);
                if (result.Succeeded)
                {
                    TempData["UserDeleted"] = "User Successfully Deleted";
                    return RedirectToAction("ManageEditors");
                }
                else
                {
                    TempData["UserDeleted"] = "Error Deleting User";
                    return RedirectToAction("ManageEditors");
                }
            }
    

    Below is the View for ListUser:

    @model IEnumerable
    
    @{
        ViewBag.Title = "ListUsers";
    }
    
    

    @ViewBag.Message

    ManageEditors

    @{ int sno = 1; foreach (var item in Model) { } }
    S.No. Email EmailConfirmed FirstName LastName Mobile
    @(sno++) @Html.DisplayFor(modelItem => item.Email) @Html.DisplayFor(modelItem => item.EmailConfirmed) @Html.DisplayFor(modelItem => item.FirstName) @Html.DisplayFor(modelItem => item.LastName) @Html.DisplayFor(modelItem => item.Mobile) @Html.ActionLink("Edit", "EditUser", new { email=item.Email}) @Html.ActionLink("Delete", "DeleteUser", new { id = item.Id })

    // below is my UserEdit Model

     public class UserEdit
        {
            [Display(Name = "Email")]
            public string Email { get; set; }
    
            [Required]
            [Display(Name = "First Name")]
            public string FirstName { get; set; }
    
            [Required]
            [Display(Name = "Last Name")]
            public string LastName { get; set; }
    
    
            [Display(Name = "Mobile")]
            public string Mobile { get; set; }
    
    
            [Display(Name = "Address")]
            public string Address { get; set; }
    
    
            [Display(Name = "City")]
            public string City { get; set; }
    
            public bool EmailConfirmed { get; set; }
        }
    

    //below is my IdentityModel.cs class which have ApplicationDbContext class

    using System.Data.Entity;
    using System.Security.Claims;
    using System.Threading.Tasks;
    using Microsoft.AspNet.Identity;
    using Microsoft.AspNet.Identity.EntityFramework;
    
    namespace SampleApp.Models
    {
        // You can add profile data for the user by adding more properties to your ApplicationUser class, please visit http://go.microsoft.com/fwlink/?LinkID=317594 to learn more.
        public class ApplicationUser : IdentityUser
        {
            public async Task GenerateUserIdentityAsync(UserManager manager)
            {
                // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
                var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
                // Add custom user claims here
                return userIdentity;
            }
            //Extra column added to auto generated Table by Code First approach (ASPNETUSERS) by Entity Framework
            public string FirstName { get; set; }
            public string LastName { get; set; }
            public string DOB { get; set; }
            public string Sex { get; set; }
            public string Address { get; set; }
            public string City { get; set; }
            public string Mobile { get; set; }
        }
    
        public class ApplicationDbContext : IdentityDbContext
        {
            public ApplicationDbContext()
                : base("DefaultConnection", throwIfV1Schema: false)
            {
            }
    
            public static ApplicationDbContext Create()
            {
                return new ApplicationDbContext();
            }
        }
    }
    

    Hope this help you :)

提交回复
热议问题