core - Blazor - 可以在代码后面 NavigateTo 吗?
问题描述
是否可以在后面的代码中使用导航管理器导航到?我有一个全局帮助程序类,如果全局函数失败,我需要将其重定向到特定页面。这可能吗?如果您能够在 NavagationManager 上的代码后面创建一个实例,我不太明白。或者如果这是可能的,我应该使用依赖注入来调用 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 块中,但在顶部使用 @inject HelperService)
public partial class MyComponent
{
[Inject] HelperService HelperService { get; set; }
public void Test()
{
HelperService.ChangePage();
}
}
ConfigureServices
里面Startup.cs
:
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
到 Helper 的构造函数中,然后将 Helper 变成一个服务,然后您可以将其注入到任何组件中。
推荐阅读
- mongodb - 如何计算 Mongo 中给定顶部元素的所有可能子文档元素?
- php - 算法的时间复杂度:求最长回文子串的长度
- javascript - 关于对角滑动(或移动)的问题
- apache - 使用 .htaccess 阻止内容即使在允许的域中也无法加载
- cad - SolidWorks 使用光栅图形保存 PDF
- python - AttributeError: 'str' object has no attribute 'rint' - 如何替换或忽略数字列中的文本
- python - Django 令牌:下载带有令牌认证的服务器文件
- javascript - 执行 AJAX 请求的问题
- javascript - Javascript:替换字符串中的特定单词
- php - 使用 Laravel 搜索 or_where()