2016-07-20 52 views
2

使用asp.net核心,是否有可能在標記幫助程序類中獲取當前記錄的用戶?標記幫助程序中當前記錄的用戶

讓想這標籤幫手:

[HtmlTargetElement("lesson")] 
public class LessonTagHelper : BaseTagHelper 
{ 
    private readonly ILessonServices lessonService; 
    private readonly UserManager<ApplicationUser> userManager; 

    public LessonTagHelper(ILessonServices lessonService, UserManager<ApplicationUser> userManager) 
    { 
     this.lessonService = lessonService; 
     this.userManager = userManager; 
    } 

    public override void Process(TagHelperContext context, TagHelperOutput output) 
    {    
     base.Process(context, output); 
     output.TagName = "div"; 

     *** I NEED USER HERE *** 

我知道,在控制器中,我們有一個「用戶」屬性隨時使用,但它不是在其他類可用。

回答

4

你可以注入IHttpContextAccessor到LessonTagHelper

private readonly ILessonServices lessonService; 
private readonly UserManager<ApplicationUser> userManager; 
private readonly IHttpContextAccessor httpContextAccessor; 

public LessonTagHelper(ILessonServices lessonService, UserManager<ApplicationUser> userManager, IHttpContextAccessor httpContextAccessor) 
{ 
     this.lessonService = lessonService; 
     this.userManager = userManager; 
     this.httpContextAccessor = httpContextAccessor; 
} 

,然後在你需要,你可以訪問用戶喜歡httpContextAccessor.HttpContext.User ...

不要忘記IHttpContextAccessor service is not registered by default,所以

services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); 
+0

這個工作無需註冊IHttpContextAccessor ... –