dotnet core 2.2布局页面和组件

dotnet core 2.2 layout page and components

我正在使用 dotnetcore 2.2 和 Razor 页面启动一个新应用。我想 'componentize' 布局文件的导航栏部分,以显示用户名,以及 hide/show 基于登录用户的菜单项。最好的方法是什么?我试过部分,但似乎无法让它工作。 有什么建议吗?

对于您所描述的内容,视图组件是一个不错的选择:

Default.cshtml:

@model NvarBarModel

<nav class="navbar navbar-expand-lg navbar-light bg-light">
  <a class="navbar-brand" href="#">Navbar</a>
  // ...

  <div class="collapse navbar-collapse" id="navbarSupportedContent">
    // ...
  </div>
</nav>

NavBarViewComponent.cs

public class NavBarViewComponent() : ViewComponent
{
   public IViewComponentResult Invoke()
   {
     return View(new NavBarModel());
   }
}

并且在您的布局页面中:

@await Component.InvokeAsync("NavBar")

您也可以使用标签助手调用组件,但我最后尝试时出现了一个错误(功能?),要求视图组件构造函数中的每个参数都包含在助手中,否则它根本不会呈现。

Here's a link to MS's documentation for view components.