如何访问 Razor Pages ASP.NET Core 布局中的 HostingEnvironment?

Rob*_*ert 3 asp.net-core razor-pages

因此,最终目标是我希望在仪表板中根据 appsettings.json 中的连接字符串突出显示连接到的数据库服务器。我可以这样做,但仅适用于主 appsettings.json,而我想知道在考虑 appsettings.Development.json 和 appsettings.Production.json 时正在发挥什么作用。

为了做到这一点,我需要一种访问 HostingEnvironment 的方法,但我似乎找不到在布局中公开它的方法。

var env = Context.HostingEnvironment; // this is the part I need to fix, everything else works.
var configuration = new ConfigurationBuilder()
      .AddJsonFile("appsettings.json")
      .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
      .Build();
var sqlBuilder = new SqlConnectionStringBuilder();

sqlBuilder = new SqlConnectionStringBuilder(configuration.GetConnectionString("DB1Connection"));
ViewData["DB1"] = sqlBuilder.DataSource;
sqlBuilder = new SqlConnectionStringBuilder(configuration.GetConnectionString("DB2Connection"));
ViewData["DB2"] = sqlBuilder.DataSource;
sqlBuilder = new SqlConnectionStringBuilder(configuration.GetConnectionString("DB3Connection"));
ViewData["DB3"] = sqlBuilder.DataSource;
Run Code Online (Sandbox Code Playgroud)

Mik*_*ind 7

使用@inject指令注入它的实例:

@inject IWebHostEnvironment environment
<!DOCTYPE html>
<html>
<head>...
Run Code Online (Sandbox Code Playgroud)

然后您可以稍后使用它:

@if(environment.IsDevelopment())
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

您需要将几个using指令添加到顶级_ViewImports文件中:

@using Microsoft.AspNetCore.Hosting
@using Microsoft.Extensions.Hosting
Run Code Online (Sandbox Code Playgroud)

有关注入视图和布局的更多信息,请参阅此处:https://www.learnrazorpages.com/advanced/dependency-injection#injecting-into-content-pages-or-views