在扩展类中获取用户管理器



我正在将ASP.net MVC项目迁移到核心版本。我有一个带有方法的扩展类,它通过用户id(Guid(返回用户名。

public static class IdentityHelpers
{
public static MvcHtmlString GetUserName(this HtmlHelper html, string id)
{
var manager = HttpContext.Current
.GetOwinContext().GetUserManager<AppUserManager>();
return new MvcHtmlString(manager.FindByIdAsync(id).Result.UserName);
}
}

当我把它重写到.NETCore时,我不知道如何在这里获得用户管理器实例。通常我只会通过DI注入,但我不知道该怎么办,因为我正在使用扩展方法,所以我不能注入它

如何在静态类中获取UserManager

新版本中的情况发生了变化。通过HtmlHelper.ViewContext访问当前的HttpContext,从那里您应该能够访问可用于解析服务的IServiceProvider

public static class IdentityHelpers {
public static MvcHtmlString GetUserName(this HtmlHelper html, string id) {
HttpContext context = html.ViewContext.HttpContext;
IServiceProvider services = context.RequestServices;
var manager = services.GetService<AppUserManager>();
return new MvcHtmlString(manager.FindByIdAsync(id).Result.UserName);
}
}

相关内容

  • 没有找到相关文章

最新更新