如何从Tag Helper

时间:2016-05-25 12:54:34

标签: asp.net asp.net-core tag-helpers

我正在ASP.NET Core(RC2)中开发一个Tag Helper,在渲染Tag Helper时,我需要访问Request对象,因为我需要弄清楚请求的URL是什么。

因此,在ASP.NET Core中,访问Request对象的正确方法来自HttpContext,并获取HttpContext我需要将IHttpContextAccessor注入我的标签帮手。

所以我尝试了但是在运行时抛出了以下异常:

  

InvalidOperationException:尝试激活“Auth0.AspNetCore.Mvc.TagHelpers.LockTagHelper”时,无法解析类型“Microsoft.AspNetCore.Http.IHttpContextAccessor”的服务。

我有什么理由不能将IHttpContextAccessor注入我的Tag Helper吗?

另外,是否有另一种方法可以访问Tag Helper中的Request对象?

修改

似乎问题在于,自最新的候选版本开始,您必须手动配置DI以处理IHttpContextAccessor。因此,在ConfigureServices中,您必须调用

services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

我相信早期的测试版是自动配置的......

问题是这是一个库,我不希望用户在他们的应用程序中配置它以使我的库正常工作,所以任何其他更可靠的访问Request对象的方法仍然会受到赞赏:)

1 个答案:

答案 0 :(得分:4)

根据Pranav的response关于GitHub上aspnet / mvc相同主题的问题#4744:

您可以将标有ViewContext的{​​{1}}类型的属性添加到代码帮助器中。这将初始化为执行页面的ViewContextAttribute

ViewContext