如何正确使用依赖项注入(inject)在 Blazor 组件上包含 ASP.NET Core Identity UserManager?
我将身份搭建到项目中,创建了一个自定义字段,并编辑了身份页面,以便在注册和个人资料页面期间显示和编辑此字段。
由于这些页面主要供登录用户使用,因此我需要构建一个页面供管理员查看和编辑用户。
我创建了一个 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 组件来指定该组件的基类。由于它是服务器端 Blazor 应用程序,我认为这应该没问题,但事实并非如此。
我的类(class)代码是:
namespace UsersComponent
{
public class UsersBase : ComponentBase
{
private readonly UserManager<ApplicationUser> _userManager;
public UsersBase(UserManager<ApplicationUser> userManager)
{
_userManager = userManager;
}
我在依赖注入(inject)时收到此错误:
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>...
要注入(inject) Razor 组件,您需要使用 [Inject]
属性上的属性或 @inject ...
在 Razor 标记区域。
UsersBase.cs
public class UsersBase : ComponentBase
{
[Inject]
protected UserManager<ApplicationUser>? UserManager { get; set; }
}
关于c# - 如何正确使用依赖项注入(inject)在 Blazor 组件上包含 ASP.NET Core Identity UserManager?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70526965/