我使用角度4调用Put Method,如下所示。我从角度调用Home控制器。它适用于GET方法,但我不能通过Post / Put方法传递body参数。这是我的角度代码
public saveData(item: CustomerList[]): any {
let header = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: header });
return this
.http
.post('/Home/Put?endpoint=myApi/CustomerService/', JSON.stringify(item), options)
.subscribe(res => {
console.log(res);
const response = res.text();
})
它击中下面的控制器方法。但Data参数设置为null。
public class HomeController : Controller
{
[HttpPut]
public object Put(string endpoint, [FromBody ]object data)
{
// ** My issue is here data is getting as null **
var result = _myRestSharp.Put<object,object>(endpoint, data);
return result;
}
[HttpGet]//Working fine
public object Get(string endpoint)
{
var result = _reveraApiClient.Get<object>(endpoint, null,
return result;
}
}
任何建议为什么变量&#39;数据&#39;得到为空?
答案 0 :(得分:0)
[FromBody]参数名为&#39; data&#39;是对象类型。 MVC无法将发布的Json反序列化为对象类型,因为它没有匹配的属性。 在c#中创建一个可以序列化数据的类,或者使用类型JObject。建议使用一个类,因为它清楚了您的方法所期望的数据。