【问题标题】:Blazor Pass List of NavItems to NavMenu as parameterBlazor 将 NavItem 的列表作为参数传递给 NavMenu
【发布时间】:2021-11-16 11:31:47
【问题描述】:

我有正常的 NavMenu 并添加了一个参数

[Parameter]
public List<NavItem> navItems {get, set;}

我的导航项目:

[Parameter]
  public string DisplayName {get, set;}

[Parameter]
  public string Href {get, set;}

所以现在我想在 MainLayout 中添加 NavMenu 并添加 List of NavItems with Parameters

如果我创建 NavItems 列表并分配参数,我会收到警告 BL0005。

我怎样才能以正确的方式做到这一点? (不忽略/禁用警告)

谢谢

【问题讨论】:

  • 提示:RenderFragment

标签: c# asp.net-core blazor


【解决方案1】:

不要使用 NavItem 列表。请改用 DisplayName/HRef 对 (ViewModel) 的列表。

Blazor 组件的生命周期(应该)由 Blazor 管理。每次你做类似new NavItem() 的事情时,你都做错了。

所以为你的菜单创建一个 ViewModel。

【讨论】:

    【解决方案2】:

    您可以将 NavMenu 中的 List 更改为 List&lt;RenderFragment&gt;,然后将它们定义为:

    navItems.Add(@&lt;a href="dummy.com"&gt;Test 1&lt;/a&gt;);

    并像这样使用它们:

    @foreach (var navItem in navItems)
    {
        @navItem
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-03
      • 2021-06-01
      • 2019-03-02
      • 1970-01-01
      • 2012-03-07
      • 2020-09-11
      相关资源
      最近更新 更多