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

问题描述 投票:0回答:3

我需要在 ASP.NET Core 3.1 中的

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

@(System.Configuration.ConfigurationManager.AppSettings["SessionExpire"])

你能帮忙如何在 ASP.NET Core 3.1 MVC 中实现这个吗?

c# asp.net-core-mvc
3个回答
21
投票

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

appsettings.json:

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

  }
}

视图:

@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration
@Configuration.GetSection("Test")["TestValue"]

7
投票

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
指令,如已接受的答案中所述。


0
投票

这适用于 .razor 页面,但不适用于 .cshtml 页面,因为在 .cshtml 页面中找不到 IConfiguration

© www.soinside.com 2019 - 2024. All rights reserved.