【发布时间】: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