現在、再帰的なモデルがあります(そのプロパティの1つは同じタイプです)。
例えば:
public class Page
{
public int ID { get; set; }
public string Description{ get; set; }
public int ParentID {get; set; }
}
ここで、誰かの親にアクセスしたい場合は、ParentIDを取得し、データベースにクエリを実行して、ページを見つける必要があります。私が欲しいのは、次のことができることです。
Page page = _db.GetFirstPage();
Page pagesParent = page.Parent;
どうすればそれを達成できますか?私は次のことを試しました:
public class Page
{
public int ID { get; set; }
public string Description{ get; set; }
public int ParentID {get; set; }
public Page Parent { get; set; }
}
エンティティフレームワークは自動的にParentがparentIDにリンクされていると想定するので、それは機能しません。
これが私のコードです。コントローラーのメソッドは次のとおりです。
public ActionResult Create()
{
var pages = _db.Pages;
ViewBag.Pages = new SelectList(pages,"ID","Description");
return View();
}
ビューで:
<div class="editor-label">
@Html.LabelFor(model => model.ParentID)
</div>
<div class="editor-field">
@Html.DropDownList("Pages", String.Empty)
@Html.ValidationMessageFor(model => model.ParentID)
</div>
モデル:
public int ID { get; set; }
public string Description { get; set; }
public string Body { get; set; }
public int? ParentID { get; set; }
public virtual Page Parent { get; set; }
ビューの作成に移動したとき。すべてのページのリストを取得しましたが、それらを作成すると、新しいページのParentプロパティがnullになります。