2016-10-06 10 views
-1

単一のエンティティに関連する異なるエンティティのレコードを表示したいとします。リストを使用して別のコレクションにデータのコレクションを追加する方法

例えば、テナントには賃貸料のコレクションがあり、賃料には徴収額があります。 賃貸料と支払いのあるすべてのテナントをビューに表示したいと考えています。

私の現在の実装はここにあります。

@foreach (var t in Model.Tenants) 
{ 
    <tr> 
     <td>@t.Fullname</td> 
     @foreach (var rents in t.Rents) 
     { 
      <td>@rents.Apartment.BedroomType</td> 
      <td>@rents.Apartment.MonthlyFee.ToString("N0")</td> 
      <td>@($"{@rents.Total.ToString("N0")}/{@rents.Type}")</td> 
      <td>@($"{@rents.DueDate.ToString("MMM yyy")}")</td> 
      foreach (var payments in rents.Payments) 
      { 
       <td>@payments.PaymentDate.ToString("MMM dd,yyyy")</td> 
       <td>@payments.AmountPaid.ToString("N0")</td> 
       <td>@payments.Balance</td> 
      } 
     } 
    </tr> 
} 

これは、現在正常に動作しますが、私はそのことをお勧めだと思い、クライアント上でフィルタリングをたくさんやっているしたくないので、私は、すべてのフィルタリングを処理するために、私のコントローラにロジックを移動したいです記録。

私がしたいことは、この実装をリストを使って変更し、各コレクションをそれ自身のリストに追加することです。たとえば、支払いは家賃に関する独自のリストになります。賃借人は、特定のテナントに関する独自のリストになります。これを行うことで、レンタル状況に基づいて賃料をフィルタリングするか、実際に支払った支払いのみを表示することができます。この現在の実装は私にそれを与えません。私は本当にここガイドラインにいくつかの助けを使用することができ

...

+2

は、あなたが何を意味するか私が何を意味するかのアイデアについては、以下の例を見てみましょう_フロントエンドでのフィルタリング?私が見る限り、何もフィルタリングをしていません。あなたが望む結果がどうなるかを明確にしてください - 3つの別々のリスト、1つはテナント、1つは賃料、もう1つは支払いをしますか?これらのリストをどのくらい正確に表示したいですか? –

+0

また、クライアント上でそのロジックをレンダリングするサーバーは..... – Hackerman

答えて

0

私はあなただけの小さな変更を加える必要がありだと思います。あなたのビューモデルでは、テナントの代わりに支払いのリストを持っています(それ以外の方法で行います)。ビューで

[HttpGet] 
    public ActionResult Index(string bedRoomType = "", double amountPaid = 0) 
    { 
     var viewModel = new TenantIndexVm(); 
     using (var context = new RentEntities()) 
     {     
      viewModel.Payments = context.Payment.Where(x => (x.Rent.BedRoomType == bedRoomType || bedRoomType == "") && (x.AmountPaid >= amountPaid)).Include("Rent.Tenant"); 
     } 
     return View(viewModel); 
    } 

、あなたが支払いをループします::

@foreach (var p in Model.Payments) 
 
{ 
 
    <tr> 
 
     <td>@p.Rent.Tenant.Fullname</td> 
 
     <td>@p.Rent.Apartment.BedroomType</td> 
 
     <td>@p.Rent.Apartment.MonthlyFee.ToString("N0")</td> 
 
     <td>@($"{@p.Rent.Total.ToString("N0")}/{@p.Rent.Type}")</td> 
 
     <td>@($"{@p.Rent.DueDate.ToString("MMM yyy")}")</td> 
 
     <td>@p.PaymentDate.ToString("MMM dd,yyyy")</td> 
 
     <td>@p.AmountPaid.ToString("N0")</td> 
 
     <td>@p.Balance</td> 
 
    </tr> 
 
}

関連する問題