将c#字典映射到jQuery中的数组

本文关键字:数组 jQuery 字典 映射 | 更新日期: 2023-09-27 18:08:32

在我的视图模型中,我有一个字典,我想在jQuery函数中评估。我很难在这两种语言之间进行映射。

视图模型
public Dictionary<int, string> Collection { get; set; }
脚本

$("#someButton").click(function () {
    var collection = {};
    var count = '@(Model.Collection.Count)' * 1;
    for (var i = 0; i < count; i++) {
        collection[i] = // Model.Collection[i]
    }
    ...
});

我如何通过索引直接从我的视图模型的集合属性检索值,或者用该数据填充一个本地javascript数组,以便我可以在我的函数的副本上操作?

我读了一些关于Knockout和Json的内容。. NET,但我真的希望在我的项目中避免另一个依赖/学习曲线

将c#字典映射到jQuery中的数组

JSON只支持字符串作为键。所以你可以将Dictionary<int, string>转换为Dictionary<string, string>,然后通过JSON.NET序列化它,将其放入JS代码中。例如:

var collection = <%= Model.CollectionJson %>

which在模型中:

public string CollectionJson {
    get {
        // correct API as @Superstringcheese suggested
        return JsonConvert.SerializeObject(
            Collection.ToDictionary(p => p.Key.ToString(), p => p.Value));
    }
}