簡體   English   中英

Asp.Net 核心剃刀 - 如何在 _Layout.cshtml 文件中使用 appsettings.json 值?

[英]Asp.Net core razor - how to use appsettings.json value in _Layout.cshtml file?

在帶有 Razor Pages 解決方案的 ASP.NET Core 中,我有一個 appsettings.development.json 文件,如下所示。

我想要得到的值APP_ID從_Layout.cshtml文件appsettings.development.json文件。 這該怎么做?

我嘗試過如下所示,它在瀏覽器中顯示控制台錯誤 - “參數列表后未捕獲的語法錯誤:丟失)”。 請讓我知道如何使用 json 文件中的這個值:

@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration
<!DOCTYPE html>
<html lang="en">
<head>
    <script>
        console.log('from settings ' + @Configuration["APP_ID"]);

…

我的 appsettings.development.json 文件:

{
  "APP_ID" : "xxxxxxxxxx",
  "APP_Value" : "zzzzzzzzzzzzz"
}
console.log('from settings ' + @Configuration["APP_ID"]);

您必須記住,使用 Razor 在服務器上渲染某些內容與在瀏覽器中的解釋方式無關。

當 Razor 渲染上述內容時,它會將以下內容寫入結果(當APP_ID = "xxxxxxxxxx" ):

console.log('from settings ' + xxxxxxxxxx);

如您所見,現在您的 APP_ID 的值直接寫入 console.log 調用中。 Razor 不知道它在寫什么,所以這就是它產生輸出的方式。

然后,當瀏覽器接收並執行它時,瀏覽器將看到+ xxxxxxxxxx部分,根據實際值,該部分將失敗並顯示許多可能的錯誤之一。 因為從 JavaScript 的角度來看,這是無效的。

因此,為了解決這個問題,您必須確保您的 Razor 視圖為瀏覽器生成有效的代碼。 這也適用於 JavaScript 和 HTML。 一種方法是使用 Razor 視圖中可用的 JSON 序列化程序。 由於 JSON 是 JavaScript 表示法,因此它始終是有效的JavaScript,因此您可以很好地使用它來將數據從 Razor 傳遞到 JavaScript。

在你的情況下,你可以這樣寫:

@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration
<!DOCTYPE html>
<html lang="en">
<head>
    <script>
        console.log('from settings ' + @Json.Serialize(Configuration["APP_ID"]));

…

請注意圍繞您的值的Json.Serialize調用。 當 JSON 序列化器只接收一個字符串時,它會正確地將它加引號 - 並且還會注意正確轉義值本身中的任何引號。 所以這是將你的值嵌入到 JavaScript 中的一種非常安全的方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM