如何在客户端处理字典?

时间:2012-05-09 12:26:56

标签: jquery dictionary getjson

看起来这应该很容易,但我似乎无法弄清楚如何访问我的键/值对:

在服务器端:

  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的键/值对?我是否需要创建自己的包装类?

1 个答案:

答案 0 :(得分:0)

当你将dict传递给$.each时,index 是一个键,而entry 一个值,即

$.each(dict, function (key, value) {
    var opt = $('<option>', { value:key, text: value });
    mySelect.append(opt);
});