2014-09-06 71 views
0

我目前正在使用個人用戶帳戶在C#下的MVC中執行ASP.NET Web應用程序。我需要獲取用戶的角色名稱。在以前的版本,下面的代碼會工作:如何在ASP.NET Update3中獲取用戶角色名稱?

  foreach (var role in userObject.Roles) 
      { 
       appUser.RolesForUser.Add(role.Role.Name); 
      } 

但現在做更新3之後,我現在得到:

Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole「不包含定義」角色'並且沒有擴展方法'角色'接受類型'Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole'的第一個參數可以被發現(你是否缺少使用指令或程序集引用?

我想知道如何用新標準獲取角色名稱。感謝您的任何解決方案!

回答

1

試試這個:如果您有使用者名稱,不要的用戶ID

//Get user roles 
var userRoles = await UserManager.GetRolesAsync(user.Id); 

編輯

,你必須檢索使用FindByNameAsync代替FindByIdAsync用戶。

var user = await UserManager.FindByNameAsync(myName); 

一旦有用戶對象,您將能夠得到公正做相關的角色:

var userRoles = await UserManager.GetRolesAsync(user.Id); 

例子:

// 
// GET: /Users/Edit/Bob 
public async Task<ActionResult> Edit(string userName) 
{ 
    if (id == null) 
    { 
     return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
    } 

    var user = await UserManager.FindByNameAsync(userName); 
    if (user == null) 
    { 
     return HttpNotFound(); 
    } 

    var userRoles = await UserManager.GetRolesAsync(user.Id); 

    return View(new EditUserViewModel() 
    { 
     Id = user.Id, 
     Email = user.Email, 
     RolesList = RoleManager.Roles.ToList().Select(x => new SelectListItem() 
     { 
      Selected = userRoles.Contains(x.Name), 
      Text = x.Name, 
      Value = x.Name 
     }) 
    }); 
} 
+0

感謝您的答覆。你能否提供進一步的例子?在我的示例中,我使用的是傳遞用戶名和查詢ApplicationUser集合的函數。雖然現在更新3中有所不同。再次感謝。 – Eddie 2014-09-07 01:44:42

+1

請發一段代碼 – 2014-09-07 03:48:30

+0

@Eddie我已經發布了一個使用用戶名的例子。 – 2014-09-07 10:02:57

相關問題