11

現在、ビューにデータを渡す LINQ ステートメントを含むコントローラーがあります。これを行うためのより効率的で優れたコーディング方法を見つけようとしています。私のホームコントローラーステートメントは次のとおりです。

Var Melt
  Furnace1 =
           (from item in db.tbl_dppITHr
           where item.ProductionHour >= StartShift && item.ProductionHour <= EndDate
           select item).Sum(x => x.Furnace1Total),

ViewData["Furnace1Total"] = Melt.Furnace1;

私の見解では、ViewData を参照してこれを表示します。使用する

 @model dynamic

現在、Index メソッド内にかなり多くの linq ステートメントがあります。そして、それぞれのために私はやっていますViewData[]

ViewData または ViewBag メソッドを使用せずに、コントローラーから複数の変数をビューに渡す方法を誰かが示すことができることを願っています。そして、私のビュー内でこれにアクセスする方法。

4

5 に答える 5

11

ViewModel必要なすべてのデータを使用して を作成し、それをビューに渡す必要があります。

public class ViewModel 
{
   public List<int> Melt1 { get; set; }

   public void LoadMeltProperties() 
   {

       if (Melt1 == null) 
       {
          Melt1 = new List<int>();
       }

       Melt1 = (from item in db.tbl_dppITHr
       where item.ProductionHour >= StartShift && item.ProductionHour <= EndDate
       select item).Sum(x => x.Furnace1Total).ToList();
   }

   public ViewModel Load()
   {
       LoadMeltProperties();
       return this;
   }
}

public ActionResult YourControllerAction() 
{
      var vm = new ViewModel().Load();
      return View("ViewName", vm);
}

strongly typed次に、ビューではモデルではなくモデルを使用できますdynamic

@model ViewModel

次に、次の方法で ViewModel プロパティを反復処理できます。

foreach(var melt in Model.Melt1) {
     // do what you require
}
于 2013-09-04T08:06:53.677 に答える
6

私見、それをViewModel使用してパスデータを作成する必要があります。

クラスを作成する

public class MyViewModel
{
    public <MeltFurnace1Type> MeltFurnace1{get;set;}
}

In Action メソッド

public ActionResult Action() 
{
      MyViewModel vm = new MyViewModel();
      vm.MeltFurnace1 = something;
      return View("YourViewName", vm);
}

ビューで

@model MyViewModel

//You can access your property using
Model.MeltFurnace1
于 2013-09-04T08:09:26.833 に答える
1

代わりにモデルを使用する

var Melt
 Furnace1 =
       (from item in db.tbl_dppITHr
       where item.ProductionHour >= StartShift && item.ProductionHour <= EndDate
       select item).Sum(x => x.Furnace1Total),
return View("SomeVIew",MeltFurnace1)

ビューで@model "TypeOfMeltFurnace1"

ビュー内のモデルをプロパティ Model で参照できます

于 2013-09-04T08:07:28.840 に答える