2017-01-30 144 views
0

ASPNET IdentityManager中的UserManager包含的功能如AddPasswordAsyncSetPhoneNumberAsync扩展UserManager以允许管理新的用户数据?

我添加了FirstName和LastName的属性,当我注册用户时没有设置值,所以我想添加屏幕来管理这些值(设置和更改它们)。

如何扩展UserManager以添加像AddNamesAsync这样的功能?

[HttpPost] 
[ValidateAntiForgeryToken] 
public async Task<ActionResult> SetPassword(SetPasswordViewModel model) 
{ 
    if (ModelState.IsValid) 
    { 
     var result = await UserManager.AddPasswordAsync(User.Identity.GetUserId(), model.NewPassword); 
     if (result.Succeeded) 
     { 
      var user = await UserManager.FindByIdAsync(User.Identity.GetUserId()); 
      if (user != null) 
      { 
       await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); 
      } 
      return RedirectToAction("Index", new { Message = ManageMessageId.SetPasswordSuccess }); 
     } 
     AddErrors(result); 
    } 

    // If we got this far, something failed, redisplay form 
    return View(model); 
} 

按照同样的逻辑,我想一个函数添加到控制如下:当我们评价ManageController行动如下

这样的功能成为必要

[HttpPost] 
[ValidateAntiForgeryToken] 
public async Task<ActionResult> SetNames(SetUserFullNamesViewModel model) 
{ 
    if (ModelState.IsValid) 
    { 
     var result = await UserManager.AddNamesAsync(User.Identity.GetUserId(), model.FirstName, model.LastName); 
     if (result.Succeeded) 
     { 
      var user = await UserManager.FindByIdAsync(User.Identity.GetUserId()); 

      return RedirectToAction("Index", new { Message = ManageMessageId.SetNamesSuccess }); 
     } 
     AddErrors(result); 
    } 

    // If we got this far, something failed, redisplay form 
    return View(model); 
} 

如何添加一个函数到UserManager或扩展UserManager,以便我可以添加允许我更新添加和更新用户自定义属性值的函数?

+0

的UserManager,就是要继承。创建你的类,继承UserManager,添加你需要的任何函数。 – trailmax

回答

1

首先添加custom columnsAppliicationUser

,然后你可以更新custom columns这样

[HttpPost] 
public async Task<ActionResult> SetNames(SetUserFullNamesViewModel model) 
{ 
    ApplicationUser usermodel = UserManager.FindById(user.Id); 
    usermodel.Name = model.Name; 
    usermodel.Surname = model.Surname; 


    IdentityResult result = await UserManager.UpdateAsync(usermodel); 
    if (result.Succeeded) 
    { 
     return RedirectToAction("ListUser", "User"); 
    } 

    return View(); 
} 
+0

在.net框架中有很多我不知道的方法,但我认为练习可以让你体验。谢谢 –