【问题标题】:c# webApi reaching null data when posting from Angular 2 clientc# webApi从Angular 2客户端发布时达到空数据
【发布时间】:2018-02-07 00:59:10
【问题描述】:

我已经设置了一个 Angular 2 客户端和一个 C#.NET Core WebApi 来在它们之间进行通信。当我从客户端发送 POST 数据时,它在服务器中达到空值。被调用的控制器是;

[HttpPost]
    public ActionResult Post([FromBody] string descr) // descr aways null
    {
        if (!string.IsNullOrEmpty(descr))
        {
            try
            {
                Restaurante novo = new Restaurante(descr);
                cnx.Restaurantes.Add(novo);
                cnx.SaveChanges();
                return Ok(novo);
            }
            catch
            {
                return NotFound();
            }
        } else return BadRequest();

    }

客户端生成JSon数据的部分:

postRestauranteHttp(nome: string) : Observable<IRestaurante>{

    console.log("nome: " + nome);
    let body = JSON.stringify({ 'descr' : nome });
    let headers = new Headers({ 'Content-Type': 'application/json' });
    let options = new RequestOptions({ headers: headers });

    return this._http.post("http://address/to/api" , body, options)
    .map((response: Response) => <IRestaurante>response.json())
    .catch(this.handleError);
}

这可能是什么原因造成的?

【问题讨论】:

  • 先试试这个:从你的帖子调用中的this.options前面删除this。像这样:return this._http.post("http://address/to/api" , body, options).
  • 我的错,“这个”已经不存在了,我会编辑我的帖子
  • - 1-首先检查json格式是否正确,然后再发送到控制器,否则api控制器无法识别它。 - 2-从您的代码中,您将其作为字符串接收,而您的客户端将其作为 json 格式传递。
  • @FábioNevesRezende 您需要在正文之前和之后连接“xxx”,以将其作为字符串发送或更改控制器以根据需要接收。

标签: c# angular asp.net-web-api


【解决方案1】:
  • 1-首先检查json格式是否正确,然后再发送到控制器,否则无法用于api控制器 认识它。
  • 2-从您的代码中,您将其作为字符串接收,而您的客户端将其作为 json 格式传递。
  • 3-您需要在正文前后连接'',以将其作为字符串发送或更改控制器以根据需要接收。

【讨论】:

    猜你喜欢
    • 2015-11-28
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    相关资源
    最近更新 更多