通过MVC Controller使用angular进行http post / put请求

时间:2018-01-30 01:44:27

标签: asp.net-mvc angular

我使用角度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;得到为空?

1 个答案:

答案 0 :(得分:0)

[FromBody]参数名为&#39; data&#39;是对象类型。 MVC无法将发布的Json反序列化为对象类型,因为它没有匹配的属性。 在c#中创建一个可以序列化数据的类,或者使用类型JObject。建议使用一个类,因为它清楚了您的方法所期望的数据。