ASP.NET MVC 4如何通过同一个控制器将多个对象传递给视图?

时间:2016-11-10 19:25:18

标签: c# asp.net-mvc

在我的ASP.NET MVC4 Web应用程序中,我尝试使用Entity Framework显示包含SQL数据库中某些信息的表。从SQL表生成一个视图(使用EF的数据库冷杉)对我来说很容易,但现在我仍然坚持一个更概念化的问题。现在我的控制器将实体对象列表传递给我的视图。

 public ActionResult Index()
{
    return View(db.APU_daily_summary_test.ToList());
}

但是现在我需要计算SQL中某些列的最小值和最大值。我知道我应该计算模型中的最小值和最大值,但之后我不知道如何通过控制器将这些信息传递给视图。我需要一个视图模型吗?一个API?一个额外的控制器?

2 个答案:

答案 0 :(得分:0)

您刚刚为View Model描述了一个完美的用例。

这是我建议的结构:

public class MyViewModel
{
    public int MaxOfColumn { get; set; }
    public List<InnerViewModel> Items { get; set; }
}

public class InnerViewModel
{
    // Create properties here which represent the Model's columns you need to display
}

视图模型不仅有助于将其分解,因此您无需在视图中执行许多数据操作。对于EF对象具有circular reference的更复杂模型,这也打破了一个非常常见的错误。

答案 1 :(得分:0)

您可以使用视图模型..

public class MyViewModel
{
    public List<MyType> MyList { get; set; }
    public int MaxVal { get; set; }
    public int MinVal { get; set; }
}

...并将您的观点与模型相关联......

或者只是从视图中调用聚合的LINQ函数Max和Min:

 {@ int max = Model.Max(x => x.MyColumn); }