【发布时间】:2020-08-31 09:16:33
【问题描述】:
我在我的Startup 类中注册了一项服务,在我的页面的OnGet() 方法之一中初始化我的UserService 的属性,然后调用OnPost(),使我的属性丢失。我做错了什么?解决办法是什么?
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
//...
services.AddScoped<IUserService, UserService>();
}
我的 UserService 类
public class UserService : IUserService
{
// ...
private ApplicationUser _appUser;
public void Initalize(ClaimsPrincipal claim)
{
var curretUserId = claim.FindFirstValue(ClaimTypes.NameIdentifier);
_appUser = _userManager.FindByIdAsync(curretUserId).Result;
}
}
我的主页的一个后端
[Authorize]
public class CreateModel : PageModel
{
// ....
private readonly IUserService _userService;
public CreateModel( // ... dependencies,
IUserService userService)
{
_userService = userService;
}
public async Task<IActionResult> OnGetAsync(string id)
{
// ...
_userService.Initalize(User);
// everything are good here, _appUser is initalized and I have all my properties are initialized
}
public async Task<IActionResult> OnPostAsync()
{
// _userService._appUser is NULL here. Why?
}
}
【问题讨论】:
-
嗨。用第二种方法更新了我的答案。
标签: c# asp.net-core razor dependency-injection asp.net-core-mvc