2016-01-09 28 views
0

我用MVC5的EntityFramework 6取決於他們的實體框架中的角色如何讓用戶列表6

我有一個診所應用程序與用戶的列表,每個用戶都有賬號角色(醫生,護士,實驗室)

如何創建(醫生)的DropDownList的或(護士)或(實驗室)

所有用戶和角色默認情況下,預定義的(單個用戶帳戶)

用戶(ApplicationUser) 角色是(IdentityRole) 我更新表的名稱,因爲這Video

所有用戶都在同一個表Users所有的角色都在Roles和我UserRoles

回答

0

它使用下面的代碼解決

在控制器

string DoctorRoleID = roleManager.FindByName("Doctor").Id; 
ViewBag.DoctorID = new SelectList(db.Users.Where(u => u.Roles.Any(r => r.RoleId == DoctorRoleID)).ToList(), "Id", "Email"); 

在查看

<div class="form-group"> 
      <div class="col-md-2"> 
       @Html.LabelFor(model => model.DoctorID, "DOCTOR", htmlAttributes: new { @class = "control-label col-md-2" }) 
      </div> 
      <div class="col-md-10"> 
       @Html.DropDownList("DoctorID", null, htmlAttributes: new { @class = "form-control" }) 
       @Html.ValidationMessageFor(model => model.EndUserID, "", new { @class = "text-danger" }) 
      </div> 
     </div> 
0

假設你降的數據下降是ID &值對它們之間的結合,那麼你只需要選擇一個不同的查詢 - 但返回相同的類型 - 取決於所需的數據。

例如, (:在相同的組件的所有匿名類型與以同樣的順序相同的部件(名稱&值)是相同的類型,包括匿名);

IEnumerable<KeyValuePair<int, string>> GetNames(NameType nt) { 

    if (nt == NameType.Nurse) { 
    return from n in db.Nurses 
      select new KeyValuePair { 
      Key = n.Id, 
      Value = n.Name 
      }; 
    } else if (nt == NameType.Doctor) { 
    return from d in db.Doctors 
      select new KeyValuePair { 
      Key = d.Id, 
      Value = d.ProfessionalDisplayName 
      }; 
    } 

    [...] 

} 

當然,你可以使用自定義類型並在id中對人員的類型進行編碼(例如,爲了保存獨立的跟蹤)。

+0

我更新了我的問題,所有的用戶都在同一個表'Users'所有角色都在'角色'中,我在'UserRoles'中將它們組合在一起表 –

+0

@ AbdallahSabri您是否在問如何在用戶,角色中的用戶和角色表之間進行簡單的連接? – Richard

+0

是的,我需要根據他們的角色創建用戶的下拉列表 –