在 .NET Core 中的 cshtml 文件中显示 appsettings.json 值

use*_*414 6 c# asp.net-core-mvc

我需要在 ASP.NET Core 3.1 中的文件appsettings.json中显示值.cshtml,就像我们在 ASP.NET MVC 中所做的那样,如下所示:

@(System.Configuration.ConfigurationManager.AppSettings["SessionExpire"])
Run Code Online (Sandbox Code Playgroud)

您能帮助如何在 ASP.NET Core 3.1 MVC 中实现这一点吗?

Yiy*_*You 20

这是一个在视图中显示 appsettings.json 值的演示:

应用程序设置.json:

{
  ...
  "Test": {
    "TestValue": "testValue"

  }
}
Run Code Online (Sandbox Code Playgroud)

看法:

@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration
@Configuration.GetSection("Test")["TestValue"]
Run Code Online (Sandbox Code Playgroud)


小智 7

游依依的回答适合当你的价值在一个部分之下时。但是,如果您的值直接位于 的根下appsettings.json,例如:

{
    ...
    "MyValueAtRoot" : "value"
}
Run Code Online (Sandbox Code Playgroud)

然后您需要使用以下命令从您的视图中调用它:

@Configuration.GetValue(typeof(string), "MyValueAtRoot")
Run Code Online (Sandbox Code Playgroud)

另一个有趣的事实:该GetValue方法有一个泛型重载方法,但此类方法的返回值不能直接呈现为 html,因为泛型类型参数会与纯 html 混淆。

如果您确实想使用该方法,则首先必须将返回值存储在 razor 代码块内的变量中,如下所示:

@{ var myValue = Configuration.GetValue<string>("MyValueAtRoot"); }
Run Code Online (Sandbox Code Playgroud)

然后渲染变量:

{
    ...
    "MyValueAtRoot" : "value"
}
Run Code Online (Sandbox Code Playgroud)

注意:对于我的两个示例,您还需要首先调用@using@inject指令,如接受的答案中所述。