我目前有一个带有 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 方法的情况下将多个 var 从控制器传递到视图。以及我如何在我看来获得这个。
你应该创建一个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
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)