可能重复Passing A List Of Objects Into An MVC Controller Method Using jQuery Ajax
但我的问题是当我通过时
var things = [
{employee:'test',effectiveDate:'',expirationDate:'' },
{ employee:'test',effectiveDate:'',expirationDate:'' }
];
$.ajax({
contentType: 'application/json',
type: "POST",
url: "/MyController/CheckMethod",
dataType: "json",
data: JSON.stringify(things),
async: false,
success: function (data) {
到一个[HTTPPOPST] JsonResult
的控制器方法,然后我value
进入List<MYMODEL>
但当我将控制器方法设为'ActionResult'
时,我在null
List<MYMODEL>
为什么这么错呢?
答案 0 :(得分:4)
我认为首先你的JSON应该是强类型的。 一旦它已经强类型,你不需要使用JSON.stringfy。 相反,
data: {"things" : things},
你的控制器应该像
public IActionResult ActionName(List<Model> things)
答案 1 :(得分:3)
ajax函数中有错误。假设您的控制器方法是
public ActionResult CheckMethod(List<MYMODEL> items)
那应该是
data: JSON.stringify('items': things),
不
data: JSON.stringify(things),
答案 2 :(得分:2)
它应该适用于两种情况,因为JsonResult
只是ActionResult
的一种类型(有关详细信息,请参阅here)。
如果您的操作仅返回JSON
数据,请坚持使用JsonResult
;它使您的操作不易出错,因为如果您不小心尝试返回其他类型的结果,Visual Studio会通知您。当您的操作返回多种类型的结果时,请使用ActionResult
。
话虽如此,斯蒂芬·穆克的观察是正确的;假设您的操作期望List<MYMODEL>
,那么您可以&#34;字符串化&#34;你的对象,但没有将它们分配给变量。确保您在AJAX
函数中声明的变量名与ActionResult
(或JsonResult
)期望的参数具有相同的名称。