2016-01-01 51 views
1
Action Controller: 
public ActionResult UserList() 
    { 
     ApplicationDbContext db = new ApplicationDbContext(); 
     var applicationDbContext = HttpContext.GetOwinContext().Get<ApplicationDbContext>(); 
     ViewBag.Names = from u in db.Users 
        from ur in u.Roles 
        join r in db.Roles on ur.RoleId equals r.Id 
        select new 
        { 
         //u.Id, 
         Name = u.UserName, 
         Role = r.Name, 
        }; 
     return View(); 
    } 
View: 
    @{ 

foreach (var Name in ViewBag.Names) 
    { 
     <tr>@Name</tr><br /> 

    } 
    } 
Result In Browser: 
        { Name = [email protected], Role = Accountant } 
       { Name = [email protected], Role = Accountant } 
       { Name = [email protected], Role = Assistant } 
       { Name = [email protected], Role = Assistant } 
       { Name = [email protected], Role = Doctor } 
       { Name = [email protected], Role = Doctor } 
       { Name = [email protected], Role = Doctor } 

「但是我只需要那個角色= Doctor的數據。我可以通過改變查詢或過濾viewbag結果來做到這一點。我的主要目的是獲得角色和與之相關的用戶「在asp.net中過濾viewbag元素mvc 5

回答

0

使用ViewModel而不是像下面那樣。創建一個名爲TestModel視圖模型Models文件夾內

public class TestModel 
{ 
    public string Name {get; set;} 
    public string Role {get; set;} 
} 

使用視圖模型來創建的,而不是創建一個匿名對象和ViewBag

public ActionResult UserList() 
    { 
     ApplicationDbContext db = new ApplicationDbContext(); 
     var applicationDbContext = HttpContext.GetOwinContext().Get<ApplicationDbContext>(); 
     IEnumareble<TestModel> models = from u in db.Users 
             from ur in u.Roles 
             join r in db.Roles on ur.RoleId equals r.Id 
              select new TestModel 
              { 
               Name = u.UserName, 
               Role = r.Name, 
              }; 

     return View(models); 
    } 

創建模型一個強類型的視圖IEnumareble<TestModel>

一個強類型的視圖
@{Model = IEnumareble<TestModel>} 
    @{ 
     foreach (TestModel Name in Model.Where(m => m.Role == "Doctor")) 
     { 
     <tr>@Name</tr><br /> 
     } 
     } 
+0

「找不到類型或名稱空間名稱IEnumareble」。此錯誤即將到來時,我添加了一擊代碼IEnumareble 車型從u =在db.Users 從烏拉圭回合中u.Roles 在db.Roles加入R ON ur.RoleId等於r.Id 選擇新TestModel { 名稱= u.UserName, 角色= R .Name, }; return查看(模型); – user3515219

+0

嘿,你需要添加特定的命名空間'使用System.Collection.Generic'。如果你想在谷歌搜索,你不需要在這裏發表評論。 – Rahul

+0

再次同樣的錯誤請來! – user3515219