[英]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.