将 DI 服务注入 ASP.NET 5 Tag Helper

Inject DI service into ASP.NET 5 Tag Helper

我正在为 ASP.NET 5 编写一个 TagHelper,需要从助手内部访问文件系统以检查文件是否存在。

在以前的版本中,我会使用 HttpContext.Current.Server.MapPath 或 HttpRuntime.AppDomainAppPath,但现在这些都没有了。什么是等价物,我如何从 TagHelper 中获得它?

使用 IApplicationEnvironment.ApplicationBasePath github

上对此进行了讨论

How do you get current physical path inside Startup.cs

您可以使用 [Activate] 属性将此服务注入您的标签助手。

示例:

public class TestTagHelper : TagHelper
{
    public string Name { get; set; } = "Initial Name";

    public int Number { get; set; } = 1000;

    [Activate]
    public IApplicationEnvironment ApplicationEnvironment { get; set; }

    public override Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
    {
       ....
    }
}