MVC 6とEFコードの最初のデザインを使用してネストされたリストを表示しようとしています。私はMVCを使い始めるのにこのTutorialを使用しており、別のレベルに持っていくことを試みています。ネストされたリストを表示してMVCパターンを維持する方法は?
クラス:
public class Location
{
[Key]
public int ID { get; set; }
public string LocationName { get; set; }
public ICollection<SubLocation> Sublocations { get; set; }
}
}
public class SubLocation
{
public int ID { get; set; }
public string SubLocationName { get; set; }
}
が正しく私のEFデータベースを設定し、SubLocation
下LocationID
への外部キーを割り当てdnx ef database update
実行します。
今、私は次の画像のように、各場所の下にサブ場所を表示したいです。ユーザーは、新しい場所または場所に関連付けられたサブ場所を追加できます。場所のリストを表示する
単純です:return View(_context.Location.ToList());
は、サブロケーションのネストされたリストを表示するには、私は、コントローラやビューで作業を行う必要がありますか?
私はちょうど、次のようなビューを使用することができます望んでいたがitem.Sublocations
たデータベース内のデータがあるので、私はよく分からない理由でnull
です:
@foreach (var item in Model) {
<tr>
<td>@Html.DisplayFor(modelItem => item.LocationName)</td>
</tr>
@foreach (SubLocation itm in item.Sublocations)
{
<tr>
<td>@itm.SubLocationName</td>
</tr>
}
}
私はコントローラでクエリを作成しようとしましたが、外部キーは比較できません。
var test = (from m in _context.SubLocation
where m.LocationID == curLocID <-- m.LocationID isn't available
select m.SubLocationName
).ToList();
私がLocationIDを使用することができたとしても、現在の位置(curLocID)をビューからコントローラに送り返す方法はわかりません。私はヘルパーメソッドが必要だと思いますが、私はサークルに入るようになっています。
メインクラスのサブクラスから適切なMVCを維持し、ネストされたリストを表示するにはどうすればよいですか?
これはうまくいっていて、私はそれがどのようにクリーンであるか好きです。私は別の方法でデータを取得しようとしていましたが、私はメインビューでそれを渡すことができませんでした。電球の瞬間。ありがとう! –