0

我正在尝试从控制器传递一个 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);

我正在使用的视图是强类型 i 与以下 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]]'.

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

4

1 回答 1

3

正如你现在所拥有的,你需要使用:

@model dynamic

因为您正在创建一个动态对象,然后您将其传递给视图。

但是,我更喜欢创建一个强类型视图模型并将其传递给视图。IE

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在您的视图中使用

于 2013-09-03T12:04:04.720 回答