有这么一个接口:
public string PostPeoples([FromBody]List<People> ps)
{
string str = "";
foreach (var item in ps)
{
str += item.Name+",";
}
return str.Trim(',');
}
这个接口比较简单,就是为了测试传入 实体类 集合 ,但是我通过postman进行调用的时候总是提示 ps 是null,也就是没有传入值进去。
这是我在postman中进行调用的数据,不太明白哪里出了问题,望指教
因为你postman选的raw,这个是没有kv 键值对关系的,所以你的参数ps是null。
改用form-data,参数ps应该是个Count为0的List。
可以用Request["ps"]先接到字符串,然后再用Json.Net或者其他 去反序列化。
关于键值对的问题,我在用raw传单个的实体类对象的时候使用键值对是没有问题的。
我刚刚解决了这个问题,解决方式如下
@LiuDanK: 这个还真没用过... 还可以这样。 这样比起来 我那种方法麻烦不少..
看下你的ajax请求部分,是不是类似这个格式:
$.ajax({
url: '/api/people',
type: 'POST',
contentType: 'application/x-www-form-urlencoded; charset=utf-8',
data: '=' + encodeURIComponent(request.term),
success: function (data) {
response(data.d);
},
error: function (result) {
alert('Error');
}
});
接口方法也可以改下,一行代码就行了:return string.Join(",", ps.Select(x => x.Name));
我刚刚解决了这个问题,解决方式如下