【问题标题】:How to use NavigationManager in a class outside razor page?如何在剃须刀页面外的类中使用 NavigationManager?
【发布时间】:2020-09-21 21:46:33
【问题描述】:

我有一个单例类 Globals,我喜欢有一个静态方法来导航到我的应用程序中的其他页面。

public class Globals
{
    public static async void openBlazorPage( string pageName )
    {
        await Task.Run( () => { NavigationManager.NavigateTo( pageName ); } );
    }
}

但我无法访问此类中的 NavigationManager。

  • 如何在 Razor 页面之外的类中访问 NavigationManager?

【问题讨论】:

    标签: blazor blazor-server-side blazor-client-side


    【解决方案1】:

    要在 Razor 页面之外的类后面的组件代码中访问 NavigationManager,请使用如下所示的 [Inject] 属性 -

    public class EmployeeEditBase : ComponentBase
        {
            [Inject]
            public NavigationManager NavigationManager { get; set; }
    
    }
    

    确保对组件使用代码隐藏方法。

    要在任何服务内部使用,请使用构造函数注入。在您的情况下,您也可以使用构造函数注入。

    public class Globals
    {
    private readonly NavigationManager _navMagager;
    public Globals(NavigationManager navManager)
    {
      _navMagager = navManager;
    }
    
        public static async void openBlazorPage( string pageName )
        {
            await Task.Run( () => { _navMagager .NavigateTo( pageName ); } );
        }
    }
    

    希望对您有所帮助。谢谢

    【讨论】:

      猜你喜欢
      • 2020-04-15
      • 1970-01-01
      • 2021-10-22
      • 2020-11-11
      • 2020-11-06
      • 2021-10-27
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多