Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC在索引视图中获取子计数_C#_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# MVC在索引视图中获取子计数

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

我使用脚手架来创建索引、细节、创建、编辑和删除视图以及控制器。我有两个视图模型(父/子)关系。在我的索引视图中,我想显示球队列表以及球员的一些信息(父/子)。例如,我想在“索引”视图中显示每个队的球员数量以及上次修改的球员数量。我不知道从哪里开始。 例子: (球队)红色--(上次修改)2015年2月1日--(球员人数)10人,以此类推

团队视图模型

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,这并没有完全回答我的问题。然而,我能够从你的回答中抓取一些片段来让我解决我的问题,因此,我将按照回答来做这件事。谢谢