![](/img/trans.png)
[英]window.onload = function() in `_Layout.cshtml` Infinity loop(ASP.NET Core)
[英]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.