MVC 6 , @inject. ( @inject IFoo Foo Foo IFoo)
IAppUserAccessor , :
public interface IAppUserAccessor
{
MyPrincipal GetAppUser();
}
AppUserAccessor, :
public class AppUserAccessor : IAppUserAccessor
{
private IHttpContextAccessor httpContextProvider;
public AppUserAccessor(IHttpContextAccessor httpContextProvider)
{
this.httpContextProvider = httpContextProvider;
}
public MyPrincipal GetAppUser()
{
return new MyPrincipal (
httpContextProvider.HttpContext.User as ClaimsPrincipal);
}
}
, ConfigureServices Startup.cs:
services.AddTransient<IAppUserAccessor, AppUserAccessor>();
, @inject, IAppUserAccessor . ViewImports.cshtml, .
@inject WebApplication4.Services.IAppUserAccessor AppUserAccessor
:
@AppUserAccessor.GetAppUser()
, , IActionContextAccessor :
public AppUserAccessor(IHttpContextAccessor httpContextProvider, IActionContextAccessor actionContextAccessor)
{
this.httpContextProvider = httpContextProvider;
this.actionContextAccessor = actionContextAccessor;
}
...
public string ControllerName
{
get { return actionContextAccessor.ActionContext.RouteData.Values["controller"].ToString(); }
}
, AppUserAccessor , . , :)
, . , . (, /URL-, IUrlHelper)
ViewContext
, 8 ViewContext, RC. .