我使用$ http
发出以下帖子请求var registration = {
userId: 23,
groupings: [
{ Id: 1, Name: 'Test Group 1', Description: 'Yo' },
{ Id: 4, Name: 'Test Group 4', Description: 'Er' }
]
}
$http({
method: 'POST',
url: url,
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
data: $.param({
code: eventCode,
UserId: registration.userId
Groupings: registration.groupings
})
})
然后是我的行动
[HttpPost]
public ActionResult New(string code, RegistrationVM model)
{
:
:
:
}
public class RegistrationVM
{
public int UserId {get;set;}
public IEnumerable<GroupingVM> Groupings { get; set; }
}
public class GroupingVM{
public int Id {get;set;}
public string Name {get;set;}
public string Description {get;set;}
public int AnotherPropertyId {get;set;}
public ANewClass ANewClass {get;set;}
}
每当帖子发生时,我都会让模型属性反映我发布的内容,除了IEnumerable(Groupings)属性。假设我在Groupings属性上发布了2个对象,当我转到Action时,Groupings属性的计数为2,但每个实例在每个对象上都有NULL或0值。我想知道我是如何弄乱这个帖子的。
答案 0 :(得分:1)
首先,让控制器将一个对象作为参数。添加&#34;字符串代码&#34;到RegistrationVM并删除字符串代码作为参数。
然后在创建客户端对象时执行相同操作。
其次,而不是使用内容类型&#34; x-www-form-urlencoded&#34;使用&#34; application / json&#34;哪个更适合传递对象。
在发布数据之前,您需要使用data: JSON.stringify(registration)
有关详细信息,请阅读有关问题的评论。