2016-07-27 61 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> 
} 

,这会使得每个评论,加上其所有的孩子(如果有的话),递归。