如何在剃须刀页面之外的类中使用NavigationManager?

时间:2020-06-03 08:49:25

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

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

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

但是我不能在此类中访问NavigationManager。

  • 如何在剃须刀页面之外的类中访问NavigationManager?

1 个答案:

答案 0 :(得分:3)

要在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 ); } );
    }
}

希望,它将为您提供帮助。谢谢