我目前有一个带有 LINQ 语句的 Controller ,我正在将数据从中传递到我的 View 。我正试图找到一种更有效和更好的编码方法来做到这一点。 我的家庭 Controller 声明如下。
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 方法的情况下将多个变量从 Controller 传递到 View 。在我看来,我将如何访问它。
最佳答案
您应该使用所有需要的数据创建一个 ViewModel
,然后将其传递给 View 。
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);
}
然后在您的 View 中您可以使用强类型
模型而不是动态
@model ViewModel
然后您可以通过以下方式迭代您的 ViewModel 属性:
foreach(var melt in Model.Melt1) {
// do what you require
}
关于c# - MVC 4 如何正确地将数据从 Controller 传递到 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18608452/