Angular2无法在Web Api (asp.net核心)上发布对象的原因是因为Web Api (asp.net核心)使用的是基于HTTP协议的RESTful API,而Angular2是一个前端框架,主要用于构建单页应用程序。在RESTful API中,数据的传输是通过HTTP请求和响应进行的,而对象是无法直接通过HTTP传输的。
解决这个问题的方法是将对象转换为JSON格式,然后通过HTTP请求发送给Web Api。在Angular2中,可以使用HttpClient模块来发送HTTP请求,并且可以使用JSON.stringify()方法将对象转换为JSON字符串。
在Web Api中,可以使用Newtonsoft.Json库来处理接收到的JSON字符串,并将其转换回对象。可以使用[FromBody]特性将JSON字符串绑定到对象上。
以下是一个示例代码:
在Angular2中发送HTTP请求:
import { HttpClient, HttpHeaders } from '@angular/common/http';
// ...
constructor(private http: HttpClient) {}
// ...
let obj = { name: 'John', age: 30 };
let jsonStr = JSON.stringify(obj);
let headers = new HttpHeaders({ 'Content-Type': 'application/json' });
this.http.post('api/endpoint', jsonStr, { headers: headers }).subscribe(
response => {
console.log(response);
},
error => {
console.error(error);
}
);
在Web Api中接收并处理请求:
using Newtonsoft.Json;
// ...
[HttpPost("api/endpoint")]
public IActionResult Endpoint([FromBody] string jsonStr)
{
var obj = JsonConvert.DeserializeObject(jsonStr);
// Process the object
return Ok();
}
这样就可以在Angular2中将对象发送给Web Api,并在Web Api中接收并处理对象了。
推荐的腾讯云相关产品:腾讯云云服务器(https://cloud.tencent.com/product/cvm)和腾讯云云数据库MySQL版(https://cloud.tencent.com/product/cdb_mysql)。
领取专属 10元无门槛券
手把手带您无忧上云