ASP.NET Core Web API接收Angular传递复杂对象值错误问题求助
问题根源
- 复杂对象无法直接作为URL路径参数:你在前端拼接URL时直接用
${pageInfo}会触发对象默认的toString方法,最终路径中该位置的值为[object Object]字符串,后端完全无法解析为对应Model的属性。 - Angular HttpClient.post参数调用错误:该方法的标准传参顺序为
请求地址、请求体内容、可选配置项,你当前错误将code作为请求体、pageInfo作为配置项传递,请求体内容完全不符合后端预期。 - 后端参数绑定逻辑错误:路由模板中的路径参数仅支持绑定字符串、数字等简单类型,无法直接映射到自定义复杂类,即使前端传对了序列化后的内容,后端也无法自动完成属性赋值。
修复方案
后端修改
调整路由模板,移除路径中的pageInfo参数,给pageInfo参数添加[FromBody]特性,指定从POST请求体中读取内容绑定对象:
[HttpPost("get/{code}")] public IActionResult Get(string code, [FromBody] Model pageInfo) { var data = _Service.GetData(code, pageInfo); if (data != null) { // 原有业务逻辑 } else { // 原有业务逻辑 } }
前端修改
移除URL中pageInfo的拼接,将pageInfo作为POST请求体传递给post方法:
getAllData(code:any,pageInfo:any):Observable<any>{ console.log(code, pageInfo); const url = `/get/${code}`; return this.http.post<any>(url, pageInfo); }
内容的提问来源于stack exchange,提问作者Valkyrie_30
相关产品推荐
相关产品推荐

