【发布时间】:2020-10-21 19:01:38
【问题描述】:
我想通过遍历可路由的 Razor 组件名称以编程方式生成菜单列表,如下所示。下面如何实现GetAllRoutableRazorComponentNames()?有可能吗?
@foreach (var filename in GetAllRoutableRazorComponentNames())
{
<li class="nav-item px-3">
<NavLink class="nav-link" href="@filename">
<span class="oi oi-list-rich" aria-hidden="true">@filename</span>
</NavLink>
</li>
}
【问题讨论】:
-
您需要使用反射来查找具有 PageAttribute 的所有类型
-
@MisterMagoo:
System.IO类有什么简单的方法吗? -
Router组件使用RouteTableFactory来做类似的事情。这是internal,但如果您需要自己的东西,source 应该很有用。 -
一个组件可以有 2 个或更多 @page 属性,并且可能需要参数。您的菜单将如何处理?
-
只是整个事情看起来有点X/Y问题。例如,标准应用程序有一个“/error”页面,你不希望它出现在你的菜单中。
标签: c# asp.net asp.net-core razor blazor