在ASP.NET Core MVC中,可以使用递归方法来构建菜单。在视图中,可以使用HTML Helper方法来生成菜单,从而避免在视图文件中编写大量的HTML代码。
示例代码如下:
ViewModels/MenuItemViewModel.cs
public class MenuItemViewModel
{
public string Text { get; set; }
public string Url { get; set; }
public IEnumerable Children { get; set; }
}
Views/Shared/_Menu.cshtml
@using WebApplication1.ViewModels
@helper GenerateMenu(IEnumerable items)
{
@foreach (var item in items)
{
-
@item.Text
@if (item.Children.Any())
{
@GenerateMenu(item.Children)
}
}
}
@if (Model != null && Model.Any())
{
@GenerateMenu(Model)
}
在Layout视图文件中,可以使用以下代码来呈现菜单:
@await Html.PartialAsync("_Menu", menuItems)
其中,menuItems是一个MenuItemViewModel对象的集合,可以在控制器中构建并传递给视图。
使用递归方法和HTML Helper可以方便地构建动态菜单,同时保持代码的可维护性和可读性。