gpt4 book ai didi

core - Blazor - 可以在后面的代码中使用 NavigateTo 吗?

转载 作者:行者123 更新时间:2023-12-05 08:31:18 25 4
gpt4 key购买 nike

是否可以在代码隐藏中使用导航管理器进行导航?我有一个全局帮助程序类,如果全局函数失败,我需要将其重定向到特定页面。这可能吗?如果您能够在代码隐藏的 NavagationManager 上创建一个实例,我不太明白。或者如果可能的话,我应该使用依赖注入(inject)来调用 naigationmanager 吗?

谢谢!

最佳答案

这个答案扩展了 Henk Holterman 的伟大答案,但包括一个完整的例子,因为服务一开始让我感到困惑,我希望将来发现这个的人有一个完整的例子。

这是我的 Index.razor 页面

@page "/"

<TypeScriptTest.Components.MyComponent></TypeScriptTest.Components.MyComponent>

这是我的 MyComponent.razor:

<button @onclick="Test">
Test
</button>

MyComponent.razor.cs:(这也可以在 MyComponent.razor 的 @Code block 中,但在顶部使用 @inject HelperService)

 public partial class MyComponent
{
[Inject] HelperService HelperService { get; set; }

public void Test()
{
HelperService.ChangePage();
}
}
Startup.cs 中的

ConfigureServices :

    public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddServerSideBlazor();
services.AddSingleton<WeatherForecastService>();
services.AddTransient<HelperService>();
}

最后,HelperService.cs

public class HelperService
{
private NavigationManager _navigationManager;
public HelperService(NavigationManager navigationManager)
{
_navigationManager = navigationManager;
}

public void ChangePage()
{
_navigationManager.NavigateTo("/test");
}
}

使用此方法,您将 NavigationManager 注入(inject)到您的 Helper 的构造函数中,然后将您的 Helper 变成一个服务,然后您可以将该服务注入(inject)到任何组件中。

关于core - Blazor - 可以在后面的代码中使用 NavigateTo 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59330322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com