2015-03-02 73 views
0

我使用腳手架來創建索引,詳細信息,創建,編輯和刪除視圖和控制器。我有兩個視圖模型(父/子)關係。在我的索引視圖中,我想顯示球隊列表以及球員(父/子)的一些信息。例如,我想在索引視圖中顯示隊員與球隊數量以及最後一名被修改的球員。我不知道從哪裏開始。 例如: (團隊)紅色 - (最後修改)01/02/2015 - (數字玩家)10等等。MVC在索引視圖中獲取子女數

團隊視圖模型

public class TeamVM 
{ 
public int ID { get; set; }  
public string Name { get; set; } 
public DateTime? LastActivity { get; set; } 
public string NumberPlayers { get; set; } 

public IList<PLayerVM> PlayerVM { get; set; } 
} 

播放器視圖模型

public class PlayerVM 
{ 
public int ID { get; set; } 
public int TeamID { get; set; } 

public string PlayerInfo { get; set; } 
public DateTime? CreateDate { get; set; } 
} 

其他視圖模型

public class TeamViewModel 
{ 
public List<Team> Teams{ get; set; } 
} 

控制器

public ActionResult Index() 
{  
    TeamViewModelviewModel = new TeamViewModel(); 
    viewModel.Teams= db.Teams.ToList(); 

    return View(viewModel); 
} 
+0

你的控制器與您的viewmodels不匹配,上面可以顯示您已經嘗試過的內容嗎? – Ako 2015-03-02 15:01:57

+0

我的不好,我修好了。我沒有太多的展示,因爲我不知道從哪裏開始。 – 2015-03-02 15:08:43

+0

你的VM也是你的實體嗎?還是他們映射? – devqon 2015-03-02 15:13:20

回答

0

db.Products.ToList() ??我認爲這是你的意思db.Teams.ToList()

您正在使用的ViewModels,所以你應該首先將DB數據映射到你的ViewModels:

public ActionResult Index() 
{ 
    var teams = db 
     .Teams 
     .Include("Players") // Assuming your Team entity has a collection of Players 
     .SelectMany(t => new TeamVM { 
      ID = t.ID, 
      // etc.. 
     }) 
     .ToList(); 
    return View(new TeamViewModel { Teams = teams }); 
} 

型號:

public class TeamVM 
{ 
    public int ID { get; set; }  
    public string Name { get; set; } 
    public DateTime? LastActivity { get; set; } 

    public IList<PLayerVM> PlayerVM { get; set; } 

    public int NumberPlayers { 
     get { return PlayerVM.Count(); } 
    } 
} 
在你看來

然後:

@model MyProject.Models.TeamViewModel 

<table> 
@foreach(var team in Model.Teams.ToList()) { 
    <tr> 
     <td>@team.Name</td> // Name 
     <td>@team.NumberPlayers</td> // Playercount 
     <td>@team.PlayerVM.Max(p => p.LastActivity).LastActivity</td> // Last edited 
    </tr> 
} 
</table> 
+0

是的,我的意思是團隊。抱歉。 – 2015-03-02 15:09:55

+0

NumberPlayers屬性僅在我的viewModel中分配,而不是在我的模型中分配。我不想將這個保存到數據庫中。當我添加 - public int NumberPlayers {{{0} {0} {{}} {返回PlayerVM.Count(); } } - 我收到以下錯誤:屬性或索引器'NumberNote'不能分配給 - 它是隻讀的 – 2015-03-02 15:33:52

+0

您是否分配給它?你是否在SelectMany()時設置它? – Beakie 2015-03-02 16:09:30