2016-07-27 63 views
2

我有下面的代碼,現在寫項目的平面列表的鏈接到一個控制器動作:遞歸在ASP.NET核心剃刀意見

<ul> 
    @foreach (var item in items) 
    { 
     <li> 
      <a asp-controller="Home" asp-action="Demo" asp-route-itemName="@item.Name"> 
       @item.Name 
      </a> 
     </li> 
    } 
</ul> 

現在,這必須成爲遞歸。項目也可以包含子項目。對於遞歸,我需要某種功能。我知道我可以使用@functions並在.cshtml文件中定義該函數。不確定這樣的帶有標籤助手的內聯HTML代碼是否仍然可以在那裏使用,看起來並不是這樣。另一種選擇是在.cs文件中使用HTML助手,在這裏肯定沒有內聯HTML。 @helper似乎不再可用。

什麼選擇我必須定義一個函數,並保持該剃鬚刀提供了內嵌HTML語法?

+0

您可以檢查項目有子表,然後就再次呈現了同樣的觀點。 –

+0

請舉例說明? – ygoe

+0

我已經在ASP.NET 4.6中實現了它,並且我對核心的客戶端語法沒有任何瞭解。如果你想我還是會共享代碼 –

回答

4

把代碼渲染的局部視圖內的評論,並與到@Html.Partial("comment", comment)呼叫渲染。

然後該評論局部視圖中你會碰到這樣的

@model Comment 

Title: @Model.Title 
Message: @Model.Message 

@if (Model.ChildComments.Any()) 
{ 
    <ul> 
     @foreach (var childComment in Model.ChildComments) 
     { 
      <li> 
       @Html.Partial("comment", childComment) 
      </li> 
     } 
    </ul> 
} 

,這會使得每個評論,加上其所有的孩子(如果有的話),遞歸。