微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ASP.NET Core Razor视图中的递归

我现在有以下代码来编写一个包含控制器操作链接的项目的平面列表:

<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语法?

解决方法

将用于呈现注释的代码放在局部视图中,并通过调用@ 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>
}

这将递归地呈现每个注释及其所有子项(如果有).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐