2

我要做的就是将字符串/整数数组传递给 mvc 操作方法。但是数据总是返回为空,我做错了什么?

MVC 控制器

[HttpPost]
 public ActionResult MyAction(List<string> ids)
 {
   // do something with array
   // But it's null
      return View();
 }

jQuery

$.post("/MyController/MyAction", JSON.stringify(ids), function () { alert("woohoo"); }, "application/json");

发布到操作结果的数据

["156"]
4

1 回答 1

3

尝试:

... JSON.stringify({ ids : ids }), ...

我很确定模型绑定器也不确定应该绑定什么列表/数组。

考虑:

[HttpPost]
public ActionResult MyAction(List<string> ids, List<string> blah)
{
}

如果 JSON 仅作为值数组传递,那么还要绑定哪个参数?JSON 可能比 Forms 提交复杂得多,因此它还需要更多定义。

例如,以下内容适用于前面的考虑。

{
  ids : ["asdf","asdf"],
  blah : ["qwer", "qwer"]
}

更新

为了正确发送 json,需要进行以下 ajax 调用:

$.ajax({
  type: "POST",
  url: "/Home/Index",
  data: JSON.stringify( ids ),
  contentType: "application/json; charset=utf-8"
});

Post 中的最后一个参数(您指定application/json)是期望从服务器返回的内容。默认情况下, $.Post 将执行 Forms Encoded ( application/x-www-form-urlencoded) contentType ,它似乎被硬编码到快捷方法中。要设置 contentType,您必须使用长期版本 $.ajax。

于 2013-03-26T21:08:03.513 回答