C# 使用jQuery Ajax将对象列表传递到ActionResult MVC控制器方法
可能重复 但我的问题是我什么时候通过C# 使用jQuery Ajax将对象列表传递到ActionResult MVC控制器方法,c#,jquery,ajax,asp.net-mvc,asp.net-mvc-4,C#,Jquery,Ajax,Asp.net Mvc,Asp.net Mvc 4,可能重复 但我的问题是我什么时候通过 var things = [ {employee:'test',effectiveDate:'',expirationDate:'' }, { employee:'test',effectiveDate:'',expirationDate:'' } ]; $.ajax({ contentType: 'application/json', type: "POST", url: "/MyController/CheckMethod", data
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
,然后我将值
放入我的列表中
但是当我将一个控制器方法作为'ActionResult'
时,我在列表中得到null
为什么会有什么不对劲 ajax函数中有一个错误。假设您的控制器方法是
public ActionResult CheckMethod(List<MYMODEL> items)
不是
它应该适用于这两种场景,因为JsonResult
只是ActionResult
的一种类型(有关更多信息,请参阅)
如果您的操作只返回JSON
数据,请坚持使用JsonResult
;它使您的操作不那么容易出错,因为如果您不小心尝试返回另一种类型的结果,VisualStudio会让您知道。当您的操作返回多种类型的结果时,请使用ActionResult
尽管如此,斯蒂芬·穆克的观察是正确的;假设您的操作需要一个列表
,则您正在“串化”对象,但没有将它们分配给变量。确保在AJAX
函数中声明的变量名与ActionResult
(或JsonResult
)所需的参数名相同。我认为首先,JSON应该是强类型的。
一旦它已经强类型化,您就不需要使用JSON.stringfy。
相反,你应该
data: {"things" : things},
你的控制器应该是
public IActionResult ActionName(List<Model> things)
public IActionResult ActionName(列出事物)
在这两种类型的控制器方法JsonResult
和ActionResult
中对我都适用。向我展示两种控制器方法?错!不能将对象数组绑定到列表
,除非其字符串化
(且IActionResult
是核心mvc,而不是mvc)
data: {"things" : things},
public IActionResult ActionName(List<Model> things)