2016-03-29 5 views
1

における役割を持つだけのユーザーを取得し、私はすべてを試してみました。あなたが知っているように、AspNetUserRolesはマッピングテーブル(多対多)なので、EDMXでは生成されません(設計上、主キーはありません)。また、我々はロールテーブル(?)を使用することはできません。私のモデルを考慮してください。ここで どのように私はちょうど役割のユーザーMVCで</strong>で<strong>を取得したいMVC 5

は私の最後の試みです:

public async Task<ActionResult> Roles() 
    { 
     var list = context.Users.Include(u => u.Roles); 
     var user = new List<ApplicationUser>(); 
     foreach(var u in list) 
     { 
      if(u.Roles!= null) 
      { 
       user.Add(u); 
      } 
     }  
     return View(user); 
    } 

、ここで私の見解である:

@model IEnumerable<Site.Models.ApplicationUser> 
     @{ 
     Layout = null; 
     } 

     <h2>List of users with Roles:</h2> 
     <table class="table"> 
     <tr> 
     <th> 
      @Html.DisplayNameFor(model => model.UserName) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.Email) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.Roles) 
     </th> 
    </tr> 
    @foreach (var item in Model) 
    { 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.UserName) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Email) 
     </td> 
     <th> 
      @Html.DisplayFor(modelItem => item.Roles) 
     </th> 
     <td> 
      @Html.ActionLink("Edit", "Edit", new { id = item.Id }) | 
      @Html.ActionLink("Details", "Details", new { id = item.Id }) | 
      @Html.ActionLink("Delete", "Delete", new { id = item.Id }) 
     </td> 
    </tr> 
    } 
    </table> 
+0

だから、問題は何ですか?何の役にも立たないユーザーはいませんか? – Marius

+0

私はロールのユーザーだけを取得したいが、このコードはすべてのユーザーを取得する。 – V47

+0

'if(u.Roles!= null)'を 'if(u.Roles.Any())'に変更するとどうなりますか? – Hendry

答えて

0

この1つを試してみてください:

var usersList = new List<ApplicationUser>(); 
    foreach (ApplicationUser user in UserManager.Users) 
    { 
     var roles = await UserManager.GetRolesAsync(user.Id); 
     if(roles.contains("Admin")) 
     { 
      usersList.Add(user); 
     } 
    } 

のみを持っているユーザーを返す必要があります。この1管理者の役割私はそれが助けて欲しい

+0

このコードを私のコードと同じに指定しておらず、すべてのユーザーを返します! – V47

+0

だから、すべてのユーザーに少なくとも1つの役割がありますか? ;)デバッグを試したことがありますか、ユーザーが何の役割も持っていないときに返されているものは何ですか? – Marius

+0

私はあなたがあなたのアプリケーションをデバッグしようとしているときに何が起こるかを教えてくださいデータベース – V47

0

私はあなたが特定の役割に基づいて照会すべきだと思います。 後でロールを追加すると、アプリケーションがバグになるためです。

public async Task<ActionResult> Roles() 
    { 
     var user= context.Users.Include(u => u.Roles).Where(u=>u.Roles.Any(r=>r.Name=="RoleName")).ToList(); 
     return View(user); 
    }