我有这个 Controller 方法:

public JsonResult List(int number) {
 var list = new Dictionary <int, string> ();

 list.Add(1, "one");
 list.Add(2, "two");
 list.Add(3, "three");

 var q = (from h in list where h.Key == number select new {
  key = h.Key,
   value = h.Value
 });

 return Json(list);
}

在客户端,具有以下jQuery脚本:
$("#radio1").click(function() {
  $.ajax({
    url: "/Home/List",
    dataType: "json",
    data: {
      number: '1'
    },
    success: function(data) {
      alert(data)
    },
    error: function(xhr) {
      alert(xhr.status)
    }
  });
});

我总是收到错误代码500。这是什么问题?

谢谢

最佳答案

如果您看到实际的响应,它可能会说



您需要使用重载的Json构造函数来包括JsonRequestBehaviorJsonRequestBehavior.AllowGet,例如:

return Json(list, JsonRequestBehavior.AllowGet);

这是示例代码中的外观(请注意,这也会将int更改为string,否则会出现另一个错误)。
public JsonResult List(int number) {
  var list = new Dictionary<string, string>();

  list.Add("1", "one");
  list.Add("2", "two");
  list.Add("3", "three");

  var q = (from h in list
           where h.Key == number.ToString()
           select new {
             key = h.Key,
             value = h.Value
           });

  return Json(list, JsonRequestBehavior.AllowGet);
}

10-06 00:04