2016-11-10 59 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); } 
相關問題