gpt4 book ai didi

c# - 是否可以在 HTML 帮助程序方法中确定 ASP.NET Core 托管环境?

转载 作者:行者123 更新时间:2023-11-30 22:52:24 26 4
gpt4 key购买 nike

我正在 ASP.NET Core 中编写一个 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 有一个 ViewContext属性,它本身有一个 HttpContext属性(property)。有了这个,您可以使用 GetRequiredService获取 IHostingEnvironment。这是一个例子:

htmlHelper.ViewContext.HttpContext.RequestServices
.GetRequiredService<IHostingEnvironment>();

这不是 DI:它使用服务定位器模式,通常称为 antipattern .如果你想使用 DI,考虑创建一个 Tag Helper而不是 IHtmlHelper 扩展方法。这也将减少嵌套所有这些属性访问调用的需要。

关于c# - 是否可以在 HTML 帮助程序方法中确定 ASP.NET Core 托管环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58133669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com