재귀

2016-07-27 2 views
2

를 보는 내가 컨트롤러 액션에 대한 링크와 함께 항목의 단순 목록을 작성하는 지금 다음 코드가 : 재귀

<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은 더 이상 사용 가능하지 않은 것 같습니다.

기능을 정의하고 Razor가 제공하는 인라인 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> 
} 

이 같은이있을 것이다.