我目前拥有一个带有LINQ语句的控制器,我将数据传递给我.我试图找到一种更有效和更好的编码方法来做到这一点.
我的家庭控制器声明如下. @H_404_3@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;
我的家庭控制器声明如下. @H_404_3@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来显示这个.运用
@H_404_3@@model dynamic现在我在Index方法中有很多linq语句.而对于每一个我正在做的ViewData []
我希望有人能够显示如何将多个var从控制器传递到没有ViewData或ViewBag方法的视图.以及我如何在我看来可以访问这个.
解决方法
您应该创建一个viewmodel,其中包含所需的所有数据,然后将其传递给视图.
@H_404_3@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);
}
然后在您的视图中,您可以使用强类型模型而不是动态模型
@H_404_3@@model viewmodel @H_404_3@foreach(var melt in Model.Melt1) { // do what you require }