首页 > 解决方案 > 后端控制器中的空对象

问题描述

我将几个对象从 Angular 8 前端传递到 C# 后端服务。这些值是在前端设置的,但是当涉及到后端时,它是空的。

这是 Angular 8 UI 前端

this.internalreport = { file_hash: this.file.sha1, values: this.values, date: new Date() };
            this.http.post('api/InternalReport/create', [
              this.internalreport,
              this.file]
            , { observe: 'response', responseType: 'text' }).subscribe(data => {
                if (data.status == 200) { console.log("success");}
              }, err => { console.error('Observer got an error:');});
}

这是控制器方法

 [HttpPost("create")]
 public ActionResult<InternalReport> Create([FromBody]InternalReport report,[FromBody]File file)
 {
 }

文件和报告均为空

更新:

像这样更新了 UI 代码

let params2 = new HttpParams().append("file", JSON.stringify(this.file));
            
            this.internalreport = { file_hash: this.file.sha1, values: this.values, date: new Date() };
            params2.append("report", JSON.stringify(this.internalreport));



            this.http.post('api/InternalReport/create', params2
            , { observe: 'response', responseType: 'text' }).subscribe(data => {
                if (data.status == 200) { console.log("success");}
              }, err => { console.error('Observer got an error:');});

从控制器中删除了 [FromBody] 标记,现在对象不为空。但其中除日期外的值为空。

 [HttpPost("create")]
        public ActionResult<InternalReport> Create(InternalReport report,File file)
        {

标签: c#.netangular8

解决方案


您只能将一个 [FromBody] 传递给操作。您应该传递一个包含这些参数的 [FromBody] 对象,或者通过查询字符串传递它们而不传递 [FromBody]。


推荐阅读