2012-02-18 67 views
0

我試圖顯示產品的嵌套Parent \ Child列表。我的表有一個Id字段和一個ParentId字段。我有產品對象列表<>,現在我想在視圖上顯示它。我提出了以下解決方案,但我確信有更好的解決方案。MVC3 Razor中的父級子列表

我的解決辦法:

我知道的主要產品\組的名稱等等,而通過這些名字的數組循環,我查詢產品的列表<>爲==陣列項目Product.Name。一旦我找到它,

我開始一個未排序的列表

    加入我的列表項

  • Product.Name

    通過查詢產品的列表<>對於誰是的ParentId任何記錄查找任何子項目== Product.Id。如果有一些,我幾乎重複這個過程,但是這次使用兒童產品作爲父產品並且尋找它的孩子。 一旦有沒有更多的孩子一個產品,我關閉列表項

  • ,然後關閉頁面

即使這個工作,現在我知道我的列表將不會深於三級所以我只編碼爲這意味着說一個偉大的父親的孩子永遠不會被看到。我想盡可能地做到這一點。有什麼想法嗎?

感謝

+0

如果你提供了一些顯示模型的代碼,以及你迄今爲止做了什麼(控制器代碼和視圖co de) – 2012-02-18 17:38:34

回答

0

你有沒有嘗試過這樣的事情?

在母版視圖,使產品具有無父:

@Html.Action("DisplayChildren", "ControllerName", new { parentId = null }) 

在局部視圖,遞歸渲染的後代:

@model IEnumerable<Product> 
<ul> 
    @foreach (var child in Model) 
    { 
     <li> 
      @Html.DisplayFor(m => child.Name) 
      @Html.Action("DisplayChildren", "ControllerName", 
       new { parentId = child.Id }) 
     </li> 
    } 
</ul> 

在控制器,只返回直接子:

public ActionResult DisplayChildren(int? parentId) 
{ 
    var children = GetDirectChildrenOf(parentId); 
    if (children.Count() > 0) 
     return PartialView(children); 
    else return new EmptyResult(); 
} 
+0

感謝您的回覆。我對mvc仍然很陌生,所以我可能會有一些後續問題,但我會嘗試一下。再次感謝。 – Jason 2012-02-19 13:43:22