2016-11-10 87 views
0

在我的ASP.NET MVC4 Web应用程序我试图显示一个表使用实体框架从SQL数据库中的一些信息。从SQL表生成视图(使用EF与数据库冷杉)对我来说很容易,但现在我陷入了一个更概念化的问题。现在我的控制器将实体对象列表传递给我的视图。ASP.NET MVC 4如何通过同一个控制器将多个对象传递给视图?

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

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

+0

为什么不在视图上使用聚合Linq函数来查找这些列的最大值? 'mylist.Max(m => m.Column)'?如果你想保持独立,你也可以在你的视图模型中有一个方法来为你做。尽管如此,我只是将它放在视图中。 –

+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的更复杂模型的一个非常常见的错误。

0

你可以使用一个视图模型..

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

...与模型视图关联......

或只是从您的视图调用聚集LINQ功能,最大值和最小值:

{@ int max = Model.Max(x => x.MyColumn); } 
相关问题