具有子集合的AngularJs Post Object到MVC WebAPI
我正在开发一个AngularJS应用程序,并且服务js中的一个方法将数据发布到具有C#中以下对象结构的web api
public class InvitationModel { public string Name { get; set; } public string Email { get; set; } public EventModel[] EventList { get; set; } } public class EventModel { public string EventName { get; set; } public int TotalAdults { get; set; } public int TotalChildren { get; set; } public bool IsAccepted { get; set; } }
问题是,当我将此数据发布到WEBAPI方法时,我的父级属性正确序列化,除了保存集合的属性。 它总是被设置为null。
接收请求的Web API方法是:
[AllowAnonymous] [Route("RSVP")] [HttpPost] public bool Submit(InvitationModel invitationModel) { return true; }
因此,Name和Email序列化正确,但EventList为NULL
我确实检查了javascript方面,我的js对象同时包含数组和其他原始属性。 问题我猜是在.NET WebAPI方面。
发布的请求有效负载是这样的:
{ "Name":"John Doe", "EventList":{ "0":{ "TotalAdults":"1", "TotalChildren":"2", "EventName":"Event 1 Name" }, "1":{ "TotalChildren":"2", "TotalAdults":"2", "EventName":"Event 2 Name" }, "2":{ "TotalAdults":"1", "TotalChildren":"1", "EventName":"Event 3 Name" } } }
JSON中的EventList
是一个属性为"0"
,“ 1
”等的对象。
我想它应该是一个JSON数组,即
{ "Name":"John Doe", "EventList": [ {"TotalAdults":"1","TotalChildren":"2","EventName":"Event 1 Name"}, {"TotalChildren":"2","TotalAdults":"2","EventName":"Event 2 Name"}, ... ], ...
要正确读入您的C#eventlist属性。