IEnumerable MVC控制器查看

时间:2013-09-03 11:57:14

标签: c# asp.net-mvc linq web ienumerable

我正在尝试从控制器传递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]]'.

任何人都知道如何传递这个变量?

1 个答案:

答案 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