将ajax中的复杂对象发送到MVC
Posted
技术标签:
【中文标题】将ajax中的复杂对象发送到MVC【英文标题】:Sending complex object in ajax to MVC 【发布时间】:2015-08-29 10:07:43 【问题描述】:发送复杂对象时,List<Order>
的值在我的控制器操作方法中返回为 null
。有人可以帮助确定问题吗?我们需要传递带有索引的对象数组吗?
javascript
function OnCustomerClick()
//var orders = [];
//orders.push( 'OrderId': '1', 'OrderBy': 'Saroj' );
var complexObject =
FirstName: 'Saroj',
LastName: 'K',
//Orders : orders
Orders: [ OrderId: 1, OrderBy: 'Saroj' , OrderId: 2, OrderBy: 'Kumar' ]
;
var obj = customer: complexObject ;
var data2send = JSON.stringify(obj);
$.ajax(
type: "POST",
url: 'Home/TestCustomer1',
data: data2send,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (arg) //call successfull
,
error: function (xhr)
//error occurred
);
;
MVC
public ActionResult TestCustomer1(Customer customer)
return Json(customer);
C#
public class Customer
public string FirstName get; set;
public string LastName get; set;
List<order> Orders get; set;
public class order
public int OrderId get; set;
public string OrderBy get; set;
【问题讨论】:
您可以尝试添加traditional: true,
ajax 选项,但实际上它应该是var complexObject = FirstName: 'Saroj', LastName: 'K', Orders[0].OrderId: 1, Orders[0].OrderBy: 'Saroj', Orders[1].OrderId: 2, Orders[1].OrderBy: 'Kumar'
才能正确绑定到您的模型(并删除contentType: "application/json; charset=utf-8",
并使用data: complexObject,
【参考方案1】:
您需要使用 public 属性进行模型绑定。 Orders
目前没有访问修饰符,所以它是私有的。
public class Customer
public string FirstName get; set;
public string LastName get; set;
public List<order> Orders get; set; // <----
除此之外,一切看起来都很好。
【讨论】:
以上是关于将ajax中的复杂对象发送到MVC的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JSONP 将复杂数组发送到 asp.net mvc 控制器
如何将两个数组作为 POST 请求参数从 AJAX 发送到 MVC 控制器(ASP .NET Core 3.1 剃须刀)?
如何在 ASP.Net MVC 5 中调用嵌套 ajax 调用并将对象数据发送到控制器
如何使用 ASP.NET MVC 通过 Ajax 将检查的行发送到服务器?