簡體   English   中英

C# Razor List to JSON:通過鍵獲取值

[英]C# Razor List to JSON: Get value by key

我正在從 Razor 頁面上的數據庫中提取數據並將其放入列表中。 目的是讓用戶輸入一年,然后應彈出汽車制造商。

C#

List<string[]> ListOfAutoMakes = new List<string[]>();
foreach (var item in SQDB.Query("SELECT year, make FROM cars"))
{
    string[] AutoMakes = new string[2];
    AutoMakes [0] = item.id.Trim();
    AutoMakes [1] = item.make.Trim();
    ListOfAutoMakes.Add(AutoMakes);
}

cshtml 文件中的 Javascript:

var AutoMakeList = '@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(ListOfAutoMakes.ToArray()))';
alert(AutoMakeList.1983 + ' ' + AutoMakeList['1991'])

呈現的 Javascript 顯示我的數據如下所示:

var AutoMakeList = '[["1983","VOLVO"],["1991","FIAT"],["1982","VOLVO"]]'

並且輸出為Undefined或空字符串。

顯然,我沒有得到鍵/值對。 我確定問題在於我如何構建我的 C# 列表,但我不確定我應該如何創建它。 我是 C# 的菜鳥,但我相信當我真的需要構建一個字典時,我正在構建一個數組數組。 我花了一天的時間在谷歌上搜索創建 C# 字典,將其序列化為 JSON,然后通過密鑰訪問生成的 JSON。 我找到的所有示例要么是針對舊版/其他版本的 C#,要么是不夠完整,無法將所有點聯系起來。

您當前的 JSON 數據是一個數組而不是對象,所以我認為您不能使用鍵/值來做到這一點。

如果您想在 Javascript 中使用 JSON 鍵/值。

您可以嘗試創建一個AutoMakes類而不是string[2]來承載您的數據。

public class AutoMakes
{

    public string id { get; set; }
    public string make { get; set; }
}

那么你可以這樣做,控制器中的SerializeObject攜帶帶有字符串的JSON。

List<AutoMakes> ListOfAutoMakes = new List<AutoMakes>();
foreach (var item in SQDB.Query("SELECT year, make FROM cars"))
{
    ListOfAutoMakes.Add(new AutoMakes()
    {
        id = item.id.Trim(),
        make = item.make.Trim()
    });
}
ViewBag.ListOfAutoMakes = Newtonsoft.Json.JsonConvert.SerializeObject(ListOfAutoMakes);

然后您可以顯示數組第一個對象 key= id值。

var AutoMakeList = @Html.Raw(ViewBag.ListOfAutoMakes);
alert(AutoMakeList[0].id);  

這是一個示例

筆記

我會使用 ajax 來調用 JSON 數據而不是使用 razor,因為這會更靈活。

暫無
暫無

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

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