4 asp.net tag-helpers asp.net-core
我正在ASP.NET Core(RC2)中开发标记帮助器,渲染标记帮助器时,我需要访问Request对象,因为我需要弄清楚请求的URL是什么。
因此,似乎在ASP.NET Core中访问Request对象的正确方法是从HttpContext,并获取HttpContextI,我需要将其注入IHttpContextAccessor到Tag Helper中。
所以我尝试了一下,但是在运行时抛出了以下异常:
InvalidOperationException:尝试激活“ Auth0.AspNetCore.Mvc.TagHelpers.LockTagHelper”时,无法解析类型为“ Microsoft.AspNetCore.Http.IHttpContextAccessor”的服务。
有什么原因我不能注入IHttpContextAccessor我的标签助手?
另外,也许还有另一种方法可以访问Tag Helper中的Request对象?
编辑
似乎问题在于,自最新的候选发布版以来,您必须手动配置DI才能处理IHttpContextAccessor。因此,ConfigureServices您必须致电
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
我相信在早期的Beta中,它是自动配置的...
问题是这是一个库,我不希望用户在其应用程序中配置该库以使我的库正常工作,因此仍然可以使用任何其他更可靠的方式来访问Request对象:)
小智 5
根据Pranav 对有关GitHub上aspnet / mvc上同一主题的问题#4744 的答复:
您可以将类型为ViewContext装饰的属性添加ViewContextAttribute到标签帮助器。这将被初始化为ViewContext执行页面的:
[ViewContext]
public ViewContext ViewContext { get; set; }
private HttpRequest Request => ViewContext.HttpContext.Request;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
809 次 |
| 最近记录: |