2015-12-21 27 views
-2

我有一個與這些領域的數據庫名爲「Tabel_Items」表:idparentchild和:如何動態地使樹在asp.net mvc的

enter image description here

我要生成html標籤等因爲這些:

<ul> 
    <li>parent1 
     <ul> 
      <li>child1</li> 
      <li>child2 
       <ul> 
        <li>child21</li> 
        <li>child22</li> 
       </ul> 
      </li> 
     </ul> 
    </li> 
    <li>parent2 
     <ul> 
      <li>child3</li> 
     </ul> 
    </li> 
</ul> 

我得到我的項目與LINQ查詢並傳遞給視圖:

public ActionResult Index() 
{ 

    DataClasses1DataContext db = new DataClasses1DataContext(); 
    var items = from i in db.Table_Items 
       select i; 

    return View(items); 
} 

我該如何循環瀏覽視圖中的「項目」並在其中創建樹列表?


我想要一個lambda表達式來選擇那些首先具有「parentId == null」的行。我測試這樣的代碼,但有一個錯誤:

@foreach (var i in Model) 
{ 
     @Html.DisplayFor(x => i.ItemName.Where(i.ParentId==null)); 
} 
+0

你嘗試過這麼遠嗎?部分問題是您的數據設計。你的表應該有這些字段:Id,ItemName,ParentId。而且,您應該使用Id作爲主鍵並將ParentId作爲外鍵創建一對多關係。 – ataravati

回答

0

我解決我的problem.Thank對我來說:

<ul> 
@foreach (var x in Model.Where(f => f.ParentId == null)) 
{ 
    <li> 
     @Html.DisplayFor(f => x.ItemName) 
     <ul> 
      @foreach (var y in Model.Where(c => c.ParentId == x.Id)) 
      { 
       <li> 
        @Html.DisplayFor(c => y.ItemName) 
        <ul> 
         @foreach (var z in Model.Where(c => c.ParentId == y.Id)) 
         { 
          <li>@Html.DisplayFor(c => z.ItemName)</li> 
         } 
        </ul> 
       </li> 
      } 
     </ul> 
    </li> 
} 
</ul>