我需要在 ASP.NET Core 3.1 中的
appsettings.json
文件中显示 .cshtml
的值,就像我们在 ASP.NET MVC 中所做的那样:
@(System.Configuration.ConfigurationManager.AppSettings["SessionExpire"])
你能帮忙如何在 ASP.NET Core 3.1 MVC 中实现这个吗?
这是一个在视图中显示 appsettings.json 值的演示:
appsettings.json:
{
...
"Test": {
"TestValue": "testValue"
}
}
视图:
@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration
@Configuration.GetSection("Test")["TestValue"]
Yiyi You 的 answer 适合当你的值在某个部分下时。但如果你的值直接在
appsettings.json
的根下,例如:
{
...
"MyValueAtRoot" : "value"
}
然后您需要使用以下方式从您的视图中调用它:
@Configuration.GetValue(typeof(string), "MyValueAtRoot")
另一个有趣的事实:
GetValue
方法有一个泛型重载方法,但此类方法的返回值不能直接呈现为 html,因为泛型类型参数会与纯 html 混淆。
如果您确实想使用该方法,则首先必须将返回值存储在 Razor 代码块内的变量中,如下所示:
@{ var myValue = Configuration.GetValue<string>("MyValueAtRoot"); }
然后渲染变量:
<p>@myValue</p>
注意:对于我的两个示例,您还需要首先调用
@using
和 @inject
指令,如已接受的答案中所述。
这适用于 .razor 页面,但不适用于 .cshtml 页面,因为在 .cshtml 页面中找不到 IConfiguration