0

コントローラーから変数を渡して、ビュー内の情報にアクセスしようとしています。

コントローラー内には、必要ないくつかの列の合計を合計する次の LINQ ステートメントがあります。私は過去に変数をリストに渡してからリストを渡したことがあります。

問題は、この 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]]'.

この変数を渡す方法を知っている人はいますか?

4

1 に答える 1

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ビューで使用する

于 2013-09-03T12:04:04.720 に答える