2017-01-30 148 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框架中有很多我不知道的方法,但我認爲練習可以讓你體驗。謝謝 –