.net Blazor中的等效角路由器输出

.net Blazor中的等效角路由器输出,.net,blazor,.net,Blazor,Angular有一个RouterOutlet,它允许自动更改组件内部的内容 视路线而定 看来Blazor没有这样的机会 我如何在Blazor中实现这一点?没有任何奇特的内置功能,但您可以使用导航管理器或路由绑定来实现 路由绑定 一个页面组件可以有多个路由。对于简单的二进制情况,例如在添加和编辑页面之间共享逻辑,您可以利用这一点 @page “/modifyperson” @page “/modifyperson/{Id}” @if(isEdit) { }

Angular有一个RouterOutlet,它允许自动更改组件内部的内容 视路线而定

看来Blazor没有这样的机会


我如何在Blazor中实现这一点?

没有任何奇特的内置功能,但您可以使用导航管理器或路由绑定来实现

  • 路由绑定
  • 一个页面组件可以有多个路由。对于简单的二进制情况,例如在添加和编辑页面之间共享逻辑,您可以利用这一点

        @page “/modifyperson”
        @page “/modifyperson/{Id}”
    
        @if(isEdit)
        {
        }
    
        @code
        {
            [Parameter] 
            public string  Id {get; set;}
            bool isEdit;
    
            protected override void OnInitialized()
            {
                if(!String.IsNullOrEmpty(Id))
                    IsEdit=true;
            }
        }
    
    
  • 导航管理器

  • 请注意,OnInitialized不是此场景的理想选择,您应该真正使用
    SetParameters
    SetParametersAsync
    -请参阅
        @page ”/myfirstroute”
        @page “/mysecondroute”
        @inject NavigationManager navManager 
        @if(lastRouteInfo==PageRoutes.FirstRoute)
        {
            //do something different
        }
    
        @code
        {
            public enum PageRoutes{FirstRoute,SecondRoute}
            private PageRoutes route;
            protected override void OnInitialized()
            { 
                string lastRouteInfo= navManager.Uri.Split(“/“).Last();
                if(lastRouteInfo==“myfirstroute”)
                    route=PageRoutes.FirstRoute;
                else if(lastRouteInfo==“mysecondroute”)
                    route =PageRoutes.SecondRoute;
            }
        }