Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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
ASP.net MVC3实体,don';我不知道怎么数数_Asp.net_Asp.net Mvc_Linq_Entity Framework - Fatal编程技术网

ASP.net MVC3实体,don';我不知道怎么数数

ASP.net MVC3实体,don';我不知道怎么数数,asp.net,asp.net-mvc,linq,entity-framework,Asp.net,Asp.net Mvc,Linq,Entity Framework,我有两张桌子,一张是国家,一张是州。 states表中有一列包含人口 我正在使用实体,我已经为这些国家创建了一个国家列表 public class TblCountries { //Entities for my table country ... public List<tblStates> States { get; set; } } 公共类TBL国家 { //我的国家实体 ... 公共列表状态{get;set;} } 例如,现在我可以列出属于一个国家的所有州 现在我要做的是

我有两张桌子,一张是国家,一张是州。 states表中有一列包含人口

我正在使用实体,我已经为这些国家创建了一个国家列表

public class TblCountries
{
//Entities for my table country
...
public List<tblStates> States { get; set; }
}
公共类TBL国家
{
//我的国家实体
...
公共列表状态{get;set;}
}
例如,现在我可以列出属于一个国家的所有州

现在我要做的是计算人口,这样我就可以显示整个国家的人口

我试着用我的观点

@foreach (var item in Model.Countries) {
 @Html.DisplayFor(modelItem => item.States.Count<population>)
}
@foreach(Model.Countries中的变量项){
@DisplayFor(modelItem=>item.States.Count)
}
但这行不通,有人知道怎么做吗


提前感谢

不应该在视图中嵌入任何逻辑。在MVC中编程时,控制器应该向视图提供必要的数据。视图的作用是只显示数据,与计数/枚举/添加/删除等无关

所以,对于你的特殊问题,我会这样说。首先,创建一个包含国家及其人口的视图模型。然后在控制器操作中填充该视图模型(这里是到数据库的所有连接、计数和实例化)。之后,将该viewmodel传递给view并编写如下内容:

@foreach (var item in Model.CountriesPopulations)
{
    @Html.DisplayFor(modelItem => item.Value)
}
@foreach (var item in Model.Countries) {
 var states = item.states;
 states.Select(state => state.population).Sum()
}
where CountriesPopulations可能是字典(包含国家名称和人口计数)。

您需要使用

我没有检查此代码,但它可能是这样的:

@foreach (var item in Model.CountriesPopulations)
{
    @Html.DisplayFor(modelItem => item.Value)
}
@foreach (var item in Model.Countries) {
 var states = item.states;
 states.Select(state => state.population).Sum()
}
德米特里关于将逻辑保持在中间层的观点是合理的建议;然而,随着.NETMVC和视图模型模式的出现,这些界线变得模糊了(这在纯粹主义者中引起了很多抱怨)

我的建议是,如果可以在控制器后面的类中隔离逻辑,那么就这样做。如果对于给定的视图,这是不可能的,那么可以随意为您的视图添加逻辑。毕竟,这就是语法的目的

您可能需要这样做的一个例子是,如果有一个通用视图模型交付给许多视图,但在某些视图中需要一些特定的逻辑调整


祝你好运

啊,好的,目前我只是传递整个表,并在我的viewModels中使用它们,我真的不知道如何添加人口,但我会尝试一下。谢谢你的回复!谢谢,我一直在找这个!现在,我似乎只在没有州的国家出现错误(如果它试图计算空值,似乎会抛出错误)