0

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

在服务器端:

  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 调用抛出了一个错误:

字典的序列化/反序列化不支持类型“System.Collections.Generic.Dictionary”,键必须是字符串或对象。

如何返回键为 int 的键/值对?我需要创建自己的包装类吗?

4

1 回答 1

0

当您将 dict 传递给$.eachthenindex 一个键并且entry 一个值,即

$.each(dict, function (key, value) {
    var opt = $('<option>', { value:key, text: value });
    mySelect.append(opt);
});
于 2012-05-09T12:32:35.493 回答