看起来这应该很容易,但我似乎无法弄清楚如何访问我的键/值对:
在服务器端:
public JsonResult GetDict(int type)
{
Repository repo = new Repository();
Dictionary<int,string> dict = repo.getDict(type);
return Json(dict, JsonRequestBehavior.AllowGet);
}
客户方之一:
var mySelect = $('#mySelect');
mySelect .empty();
mySelect .append($('<option/>', { value: "", text: "-- pick one --" }));
$.getJSON("/controller/GetDict/", { type: 1 }, function (dict, status) {
// this doesn't work
$.each(dict, function (index, entry) {
mySelect .append($('<option/>', {
value: entry.Key,
text: entry.Value
}));
});
});
如何从我的getJSON调用返回的字典中创建选择列表?
事实证明我的getJSON调用引发了错误:
键入&#39; System.Collections.Generic.Dictionary&#39;字典的序列化/反序列化不支持,键必须是字符串或对象。
如何返回键为int的键/值对?我是否需要创建自己的包装类?
答案 0 :(得分:0)
当你将dict传递给$.each
时,index
是一个键,而entry
是一个值,即
$.each(dict, function (key, value) {
var opt = $('<option>', { value:key, text: value });
mySelect.append(opt);
});