我可以在 Blazor 服务中调用 NavigationManager 吗
Can I call NavigationManager in a Blazor service
我正在尝试创建一个错误页面服务,该服务在被调用时将确定发生了哪种类型的异常并正确处理代码。如果异常是 "redirect" 类型,它应该将用户发送到登录页面(出于测试目的,我只使用主页“/”页面)。
我正在尝试使用 NavigationMangager.NavigateTo("/"),但每当我到达该函数调用时,我 运行 就会进入 Null 点异常。一段时间以来,我一直在寻找解决方案,但我看到的一切都是在 .razor 文件中使用 NavigationManager,我正试图在 .cs 服务中完成它。目前这是不可能的还是我只是做错了什么?我在下面包含了我的文件 "ErrorProcessingService.cs" 中的所有相关代码,如有任何帮助,我们将不胜感激。
using ToDoList.Pages;
using Microsoft.AspNetCore.Components;
namespace ToDoList.ExceptionHandler
{
public class ErrorProcessingService
{
[Inject]
protected NavigationManager NavigationManager {get; set;}
public void processError(ErrorTypes.errorType et)
{
new ErrorTypes();
switch(et)
{
case ErrorTypes.errorType.ignore:
//To Be Implemented
break;
case ErrorTypes.errorType.popup:
//To Be Implemented
break;
case ErrorTypes.errorType.redirect:
NavigationManager.NavigateTo("/");
break;
}
}
}
}
在服务中你不能使用 [Inject]
属性,但在构造函数中注入依赖:
using ToDoList.Pages;
using Microsoft.AspNetCore.Components;
namespace ToDoList.ExceptionHandler
{
public class ErrorProcessingService
{
public ErrorProcessingService(NavigationManager navigationManager)
{
NavigationManager = navigationManager;
}
protected NavigationManager NavigationManager { get; }
public void processError(ErrorTypes.errorType et)
{
new ErrorTypes();
switch(et)
{
case ErrorTypes.errorType.ignore:
//To Be Implemented
break;
case ErrorTypes.errorType.popup:
//To Be Implemented
break;
case ErrorTypes.errorType.redirect:
NavigationManager.NavigateTo("/");
break;
}
}
}
}
我正在尝试创建一个错误页面服务,该服务在被调用时将确定发生了哪种类型的异常并正确处理代码。如果异常是 "redirect" 类型,它应该将用户发送到登录页面(出于测试目的,我只使用主页“/”页面)。
我正在尝试使用 NavigationMangager.NavigateTo("/"),但每当我到达该函数调用时,我 运行 就会进入 Null 点异常。一段时间以来,我一直在寻找解决方案,但我看到的一切都是在 .razor 文件中使用 NavigationManager,我正试图在 .cs 服务中完成它。目前这是不可能的还是我只是做错了什么?我在下面包含了我的文件 "ErrorProcessingService.cs" 中的所有相关代码,如有任何帮助,我们将不胜感激。
using ToDoList.Pages;
using Microsoft.AspNetCore.Components;
namespace ToDoList.ExceptionHandler
{
public class ErrorProcessingService
{
[Inject]
protected NavigationManager NavigationManager {get; set;}
public void processError(ErrorTypes.errorType et)
{
new ErrorTypes();
switch(et)
{
case ErrorTypes.errorType.ignore:
//To Be Implemented
break;
case ErrorTypes.errorType.popup:
//To Be Implemented
break;
case ErrorTypes.errorType.redirect:
NavigationManager.NavigateTo("/");
break;
}
}
}
}
在服务中你不能使用 [Inject]
属性,但在构造函数中注入依赖:
using ToDoList.Pages;
using Microsoft.AspNetCore.Components;
namespace ToDoList.ExceptionHandler
{
public class ErrorProcessingService
{
public ErrorProcessingService(NavigationManager navigationManager)
{
NavigationManager = navigationManager;
}
protected NavigationManager NavigationManager { get; }
public void processError(ErrorTypes.errorType et)
{
new ErrorTypes();
switch(et)
{
case ErrorTypes.errorType.ignore:
//To Be Implemented
break;
case ErrorTypes.errorType.popup:
//To Be Implemented
break;
case ErrorTypes.errorType.redirect:
NavigationManager.NavigateTo("/");
break;
}
}
}
}