C# 从前端提交模型后,API控制器中的模型为空
我有一个带.Net核心的Angular项目,本质上非常简单,该应用程序只列出了一个人,还允许某人添加一个人 但是,当我提交一个新人时,控制器中的模型总是空的 以下是我的角度贴子方法:C# 从前端提交模型后,API控制器中的模型为空,c#,angular,api,.net-core,C#,Angular,Api,.net Core,我有一个带.Net核心的Angular项目,本质上非常简单,该应用程序只列出了一个人,还允许某人添加一个人 但是,当我提交一个新人时,控制器中的模型总是空的 以下是我的角度贴子方法: public async onSubmit(value: any, valid: boolean, isLive: boolean) { const model = { ...value, }; console.log(JSON.stringify(model)); try { con
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控制器中,我看到了以下内容:
有人能推荐或建议为什么它是空的吗?我已尝试删除JSON.stringify,但问题仍然存在
按照注释中的建议,通过邮递员到达终点,模型将填充数据。以下是邮递员的尸体:
似乎从角度前端提交会将性别变量设置为
字符串
,将出生日期设置为不正确的格式。您不应该需要[FromBody]
,除非您也在相同调用中传递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})
您是否使用默认的.net核心JSON转换器或newtonsoft.JSON?嘿@SergeyAnisimov,我在项目中也没有指定。此外,您是否尝试从Postman之类的工具发布相同的模型?如果是,它是否有效?在你的操作中删除
[FromBody]
“Hey@SergeyAnisimov我刚刚尝试过,用我的发现更新了帖子。
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})