c# - 后端控制器中的空对象
问题描述
我将几个对象从 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)
{
解决方案
您只能将一个 [FromBody] 传递给操作。您应该传递一个包含这些参数的 [FromBody] 对象,或者通过查询字符串传递它们而不传递 [FromBody]。
推荐阅读
- javascript - 反应状态消失
- javascript - 多行私有证书文件作为 Beanstalk ENV Var
- vaadin - 向 Vaadin 网格添加复选框
- apache-spark - 在 Spark SQL 中使用 group_by where
- node.js - 嵌入不发送不和谐的js
- snowflake-cloud-data-platform - Snowflake task_history 错误代码和描述
- python - 有没有办法在具有唯一标准 Python 的列表中查找元素?
- python - 如何在 spaCy v3 中正确使用变压器模型进行自定义 NER?
- notepad++ - 在我的用户定义语言中定义折叠标记时遇到问题
- javascript - 使用输入过滤器在长下拉列表中搜索项目,但只允许用户从下拉列表中提交选项