如何正确使用依赖注入在 Blazor 组件上包含 asp.net 核心身份 UserManager?
How do I properly use dependency injection to include asp.net core identity UserManager on a Blazor component?
如何正确使用依赖注入在 Blazor 组件上包含 asp.net 核心身份 UserManager?
我将 Identity 搭建到项目中,创建了一个自定义字段,并编辑了 Identity 页面以在注册和个人资料页面期间显示和编辑该字段。
由于这些页面主要针对登录用户,我需要建立一个页面供管理员查看和编辑用户。
我创建了一个 Blazor 页面并从“Index.cshtml.cs”复制了这段在互联网上也出现的代码:
private readonly UserManager<ApplicationUser> _userManager;
private readonly SignInManager<ApplicationUser> _signInManager;
public IndexModel(
UserManager<ApplicationUser> userManager,
SignInManager<ApplicationUser> signInManager)
{
_userManager = userManager;
_signInManager = signInManager;
}
我使用了此处的指南:Micosoft Docs,创建了一个 Razor 组件来为该组件指定一个基础 class。由于它是服务器端 Blazor 应用程序,我认为这应该没问题,但事实并非如此。
我的class代码是:
namespace UsersComponent
{
public class UsersBase : ComponentBase
{
private readonly UserManager<ApplicationUser> _userManager;
public UsersBase(UserManager<ApplicationUser> userManager)
{
_userManager = userManager;
}
我在依赖项注入时收到此错误:
public UsersBase(UserManager<ApplicationUser> userManager)
{
_userManager = userManager;
}
错误是这样的:
CS7036 There is no argument given that corresponds to the required formal parameter 'userManager' of 'UsersBase.UsersBase(UserManager<ApplicationUser>)'
任何人都可以指出我如何减轻这个错误吗?我将不胜感激。
我假设您在 Program.cs
中使用类似以下内容的内容:
builder.Services.AddDefaultIdentity<ApplicationUser>...
要在 razor 组件中注入,您需要在 razor 标记区域的 属性 或 @inject ...
上使用 [Inject]
属性。
UsersBase.cs
public class UsersBase : ComponentBase
{
[Inject]
protected UserManager<ApplicationUser>? UserManager { get; set; }
}
如何正确使用依赖注入在 Blazor 组件上包含 asp.net 核心身份 UserManager?
我将 Identity 搭建到项目中,创建了一个自定义字段,并编辑了 Identity 页面以在注册和个人资料页面期间显示和编辑该字段。
由于这些页面主要针对登录用户,我需要建立一个页面供管理员查看和编辑用户。
我创建了一个 Blazor 页面并从“Index.cshtml.cs”复制了这段在互联网上也出现的代码:
private readonly UserManager<ApplicationUser> _userManager;
private readonly SignInManager<ApplicationUser> _signInManager;
public IndexModel(
UserManager<ApplicationUser> userManager,
SignInManager<ApplicationUser> signInManager)
{
_userManager = userManager;
_signInManager = signInManager;
}
我使用了此处的指南:Micosoft Docs,创建了一个 Razor 组件来为该组件指定一个基础 class。由于它是服务器端 Blazor 应用程序,我认为这应该没问题,但事实并非如此。
我的class代码是:
namespace UsersComponent
{
public class UsersBase : ComponentBase
{
private readonly UserManager<ApplicationUser> _userManager;
public UsersBase(UserManager<ApplicationUser> userManager)
{
_userManager = userManager;
}
我在依赖项注入时收到此错误:
public UsersBase(UserManager<ApplicationUser> userManager)
{
_userManager = userManager;
}
错误是这样的:
CS7036 There is no argument given that corresponds to the required formal parameter 'userManager' of 'UsersBase.UsersBase(UserManager<ApplicationUser>)'
任何人都可以指出我如何减轻这个错误吗?我将不胜感激。
我假设您在 Program.cs
中使用类似以下内容的内容:
builder.Services.AddDefaultIdentity<ApplicationUser>...
要在 razor 组件中注入,您需要在 razor 标记区域的 属性 或 @inject ...
上使用 [Inject]
属性。
UsersBase.cs
public class UsersBase : ComponentBase
{
[Inject]
protected UserManager<ApplicationUser>? UserManager { get; set; }
}