我正在尝试从控制器传递var并访问视图中的信息。
在控制器内部,我有以下LINQ语句,它总计了我需要的一些列的总和。我过去只是将var传递给了一个列表然后将列表传递过来。
问题在于我不确定如何通过这个var。
以下是控制器代码
var GoodProduct =
new
{
CastGoodSum =
(from item in db.tbl_dppITHr
where item.ProductionHour >= StartShift && item.ProductionHour <= EndDate
select item).Sum(x => x.CastGood),
CastScrap =
(from item in db.tbl_dppITHr
where item.ProductionHour >= StartShift && item.ProductionHour <= EndDate
select item).Sum(x => x.Scrap),
MachinedSum =
(
from item in db.tbl_dppITHr
where item.ProductionHour >= StartShift && item.ProductionHour <= EndDate
select item).Sum(x => x.Machined),
};
return View(GoodProduct);
我使用的视图是强类型的,我使用以下IEnmerable
@model IEnumerable<int?>
我也试过
@model IEnumerable<MvcApplication1.Models.tbl_dppITHr>
当我传递单个值类型时,这工作正常,但由于我正在做一个总和,我得到以下错误。
The model item passed into the dictionary is of type '<>f__AnonymousType2`3[System.Nullable`1[System.Int32],System.Nullable`1[System.Int32],System.Nullable`1[System.Int32]]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[System.Nullable`1[System.Int32]]'.
任何人都知道如何传递这个变量?
答案 0 :(得分:3)
如你所知,你需要使用:
@model dynamic
在创建动态对象时,然后将其传递给视图。
但是,我更喜欢创建强类型视图模型并将其传递给视图。 即。
public class GoodProductViewModel {
public int CastGoodSum {get;set;}
public int CastScrap {get;set;}
public int MachinedSum {get;set;}
}
然后在控制器中填充...
var GoodProduct = new GoodProductViewModel
{
CastGoodSum = ....,
CastScrap = ...,
MachinedSum = ...
};
return View(GoodProductViewModel);
在视图中使用@model GoodProductViewModel