Asp.net 计算项目的元素数并返回到视图
我有一个数据库,其中有一个表cars,其中有一些cars,每个设备都有一个类型。我想查看一下表中每种类型的车有多少辆。到目前为止,我所拥有的是控制器 控制器:Asp.net 计算项目的元素数并返回到视图,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我有一个数据库,其中有一个表cars,其中有一些cars,每个设备都有一个类型。我想查看一下表中每种类型的车有多少辆。到目前为止,我所拥有的是控制器 控制器: public ActionResult CountCars() { var count = db.Cars.Where(s => s.Cars.Name.Contains("Ford")).Count(); var view = new CountCarsViewModel()
public ActionResult CountCars()
{
var count = db.Cars.Where(s => s.Cars.Name.Contains("Ford")).Count();
var view = new CountCarsViewModel()
{
Count = count
};
return PartialView("_MainSideBarPartialLayout", view);
}
ViewModel类:
public class CountCarsViewModel
{
public int Count { get; set; }
}
视图:
@model Project.ViewModels.Home.CountCarsViewModel
@模型。计数
但是它不包括任何汽车。。刚刚得到0分
任何人都可以提供解决方案吗?您当前的查询将返回
0
,可能是因为没有与名称Ford
匹配的汽车,您必须调试该问题并查看发生了什么。要回答表中每种类型的汽车数量,您需要GroupBy
:-
var view= db.Cars.GroupBy(s => s.Cars.Name)
.Select(x => new CountCarsViewModel
{
CarName = x.Key,
Count = x.Count()
});
return PartialView("_MainSideBarPartialLayout", view);
将ViewModel更改为包含要保存的属性,如下所示:-
public class CountCarsViewModel
{
public string CarName {get; set; }
public int Count { get; set; }
}
我认为问题在于在“returnpartialview”(_MainSideBarPartialLayout,view);”中使用“PartialView”。在普通视图上尝试查看结果,然后使其成为局部。如果坚持使用局部视图,可能需要局部视图的触发器来显示正确的计数 您确定where子句匹配了任何内容吗?调试并查看返回的内容。最好将对
Count
的调用移到另一行,这样您就可以实际看到查询通常返回的内容。Car
上有Cars
属性也是可疑的。换句话说,您的查询不应该是s.Name.Contains(…)
?在这方面,在这里查看您的实际实体类可能会有所帮助。谢谢您的回答@rahulsingh。但它仍然返回0..我认为你走对了方向。但是,我只想计算一个项目的数量。@PerSolbakken-在这种情况下,从count
中删除count()
,然后调试,看看您是否得到了任何项目,还有车是否存在于db.Cars
中。就我的回答而言,它将返回表中的每辆车和车的数量。在我从CountCars()方法创建了一个新视图后,它突然工作了。我得到了正确的物品数量。但它对partialview不起作用。。如何使用PartialView显示计数?它在视野范围内运行良好。有线。。
public class CountCarsViewModel
{
public string CarName {get; set; }
public int Count { get; set; }
}