2016-11-10 22 views
0

私のASP.NET MVC4 Webアプリケーションでは、Entity Frameworkを使用して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); }