根据数据库自动添加菜单

时间:2019-01-19 19:48:21

标签: asp.net-core .net-core

.NET Core中存在以下问题。我有一个应用程序,该应用程序具有从数据库生成的侧边菜单,现在我的问题是如何做到这一点,这样您就不必在每个视图中都包含此菜单,而只需将其自动加载到侧边菜单中即可。在symfony框架中,我是这样做的:

{{render (controller (
         'AppBundle: Article: recentArticles'
         {'max': 3}
     ))}}

当然,除了菜单之外,它还可以是每个子页面上,最近注册的等等的最近添加文章的列表。

在.Net Core中,我不知道可以在_Layouts.shtml中添加一些固定元素(例如搜索引擎),但是如何添加这样的动态菜单,该菜单在每次加载页面时从数据库下载?

2 个答案:

答案 0 :(得分:0)

简单的答案是在要菜单的页面上进行一次foreach循环,然后将集合绑定到该菜单,从而从集合中创建html标签。如果您希望它位于_Layout.cshtml文件中,则除了集合中的菜单数据外,您还需要添加与之相关的视图,以便您可以过滤项目在哪一页上显示。因此,示例将类似于

@foreach (var item in menuItems.Where(x => x.View == "pass the view name"))
{
   <div class="menuItem" name="item.Name"/>
   ....
}

或者如果您将其他菜单结构用作<li>或treeList,则使用相同的方法 不同的标签:)

视图名称可以通过ViewData["viewName"]ViewContext.RouteData.Values["controller"].ToString()进行传递 因为它应该通过当前视图,所以菜单已进入并相应地填充菜单

答案 1 :(得分:0)

您应该考虑使用View component。这是动态菜单的一个很好的解决方案。