【问题标题】:Model is null in API controller after being submitted from Angular frontend从 Angular 前端提交后,API 控制器中的模型为空
【发布时间】:2021-02-19 20:19:33
【问题描述】:

我有一个带有 .Net Core 的 Angular 项目,它本质上非常简单,该应用程序只列出人员,还允许某人添加人员。

但是,当我提交一个新人时,控制器中的模型始终为空。

这是我的 Angular-Post 方法:

 public async onSubmit(value: any, valid: boolean, isLive: boolean) {

 const model = {
   ...value,
 };

 console.log(JSON.stringify(model));

 try {

   const header = new HttpHeaders()
    .set('Content-type', 'application/json');

   var success = this.httpClient.post(this.baseUrl + 'person', JSON.stringify(model), { headers: header }).toPromise();

   if (success) {
     console.log('wooo');
   }

 }  catch (error) {
   console.log(error);
 }

} 

将模型记录到控制台会显示以下数据:

{"Firstname":"john","Lastname":"Doe","Gender":"2","DateOfBirth":"29/09/1955"}

但是在 API 控制器中我看到以下内容:

任何人都可以推荐或建议为什么这是 null 吗?我已尝试删除 JSON.stringify,但问题仍然存在。

按照 cmets 中的建议通过 Postman 到达终点,模型将填充数据。下面是邮递员的正文:

{
 "Firstname": "frefrefre", 
 "Lastname": "dewdewdew", 
 "Gender": 1, 
 "DateOfBirth": "2019-01-06T17:16:40"
}

似乎从 Angular 前端提交将 Gender 变量设置为 string,并将 DateOfBirth 设置为格式不正确..

【问题讨论】:

  • 你使用默认的 .net core JSON 转换器还是 newtonsoft.json?
  • 嘿@SergeyAnisimov 我还没有在项目中指定。
  • 另外,您是否尝试过使用 Postman 之类的工具发布相同的模型?如果是,它有效吗?
  • 删除你的操作中的[FromBody]
  • 嘿@SergeyAnisimov 我刚刚尝试过,用我的发现更新了帖子。

标签: c# angular api .net-core


【解决方案1】:

你不应该需要[FromBody],除非你也在same call中传递URL数据,这个问题似乎是服务器解释有问题内容类型/标题。

尝试使标头集合与 Postman 测试中的完全相同。 此外,可能值得稍微简化代码以跟踪问题:

const headers = { 'content-type': 'application/json'}  
const body=JSON.stringify(model);
console.log(body)
var success = this.httpClient.post(this.baseURL + 'person', body,{'headers':headers})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 2014-12-21
    • 2015-05-15
    • 2020-08-15
    • 1970-01-01
    • 2011-05-06
    相关资源
    最近更新 更多