ASP.net MVC3实体,don';我不知道怎么数数
我有两张桌子,一张是国家,一张是州。 states表中有一列包含人口 我正在使用实体,我已经为这些国家创建了一个国家列表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;} } 例如,现在我可以列出属于一个国家的所有州 现在我要做的是
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中使用它们,我真的不知道如何添加人口,但我会尝试一下。谢谢你的回复!谢谢,我一直在找这个!现在,我似乎只在没有州的国家出现错误(如果它试图计算空值,似乎会抛出错误)