Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以在HTML助手方法中确定ASP.NET核心托管环境?_C#_Asp.net Core_Dependency Injection_Html Helper - Fatal编程技术网

C# 是否可以在HTML助手方法中确定ASP.NET核心托管环境?

C# 是否可以在HTML助手方法中确定ASP.NET核心托管环境?,c#,asp.net-core,dependency-injection,html-helper,C#,Asp.net Core,Dependency Injection,Html Helper,我正在ASP.NETCore中编写一个HTML助手方法,希望检测当前的托管环境。指定的方法是使用DI,例如: public class MyClass { private readonly IHostingEnvironment _hostingEnvironment; public MyClass(IHostingEnvironment hostingEnvironment) { _hostingEnvironment = hostingEnvironment

我正在ASP.NETCore中编写一个HTML助手方法,希望检测当前的托管环境。指定的方法是使用DI,例如:

public class MyClass {
    private readonly IHostingEnvironment _hostingEnvironment;

    public MyClass(IHostingEnvironment hostingEnvironment) {
        _hostingEnvironment = hostingEnvironment;
    }

    public void Xyzzy() {
        var environment = _hostingEnvironment.EnvironmentName;
        [...]
    }
}

然而HTML助手方法是扩展方法,因此必须是静态的,所以不能使用DI。在
IHtmlHelper
对象中,我似乎看不到任何告诉我当前托管环境的信息;如何从我的HTML助手方法中找到它?

IHtmlHelper
有一个属性,它本身也有一个属性。有了它,您可以使用获得
IHostingEnvironment
。下面是一个例子:

htmlHelper.ViewContext.HttpContext.RequestServices
    .GetRequiredService<IHostingEnvironment>();
htmlHelper.ViewContext.HttpContext.RequestServices
.GetRequiredService();
这不是DI:它使用的是服务定位器模式,它通常被称为。如果您想使用DI,请考虑创建一个替代“<代码> IHTMLHelpE./COD>扩展方法”。这也将减少嵌套所有这些属性访问调用的需要