C# MVC在索引视图中获取子计数
我使用脚手架来创建索引、细节、创建、编辑和删除视图以及控制器。我有两个视图模型(父/子)关系。在我的索引视图中,我想显示球队列表以及球员的一些信息(父/子)。例如,我想在“索引”视图中显示每个队的球员数量以及上次修改的球员数量。我不知道从哪里开始。 例子: (球队)红色--(上次修改)2015年2月1日--(球员人数)10人,以此类推 团队视图模型C# MVC在索引视图中获取子计数,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我使用脚手架来创建索引、细节、创建、编辑和删除视图以及控制器。我有两个视图模型(父/子)关系。在我的索引视图中,我想显示球队列表以及球员的一些信息(父/子)。例如,我想在“索引”视图中显示每个队的球员数量以及上次修改的球员数量。我不知道从哪里开始。 例子: (球队)红色--(上次修改)2015年2月1日--(球员人数)10人,以此类推 团队视图模型 public class TeamVM { public int ID { get; set; } public string Name
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 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; }
}
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(); }
}
}
公共类TeamVM
{
公共int ID{get;set;}
公共字符串名称{get;set;}
公共日期时间?LastActivity{get;set;}
公共IList PlayerVM{get;set;}
公共整数层{
获取{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>
@model MyProject.Models.TeamViewModel
@foreach(Model.Teams.ToList()中的var团队){
@team.Name//Name
@team.NumberPlayers//Playercount
@team.PlayerVM.Max(p=>p.LastActivity).LastActivity//上次编辑
}
你的控制器与你的viewmodels不匹配,上面你能展示你已经尝试过的吗?我不好,我已经解决了。我没有太多东西要展示,因为我不知道从哪里开始。你的VM
也是你的实体吗?或者它们被映射了?我不确定我是否遵循。在我的控制器中,我用我的模型映射我的视图模型,反之亦然。是的,我指的是团队。抱歉。NumberPlayers属性仅在我的viewModel中指定,而不是在我的模型中指定。我不想将其保存到数据库中。当我添加--public int NumberPlayers{get{return PlayerVM.Count();}}时--我得到了以下错误:属性或索引器'NumberNote'无法分配给--它是只读的,您分配给它了吗?当您选择many()时是否设置了它?@devqon,这并没有完全回答我的问题。然而,我能够从你的回答中抓取一些片段来让我解决我的问题,因此,我将按照回答来做这件事。谢谢