gpt4 book ai didi

Angularjs Post方法到asp.net core传递空对象

转载 作者:搜寻专家 更新时间:2023-10-30 21:20:15 25 4
gpt4 key购买 nike

最近我开始学习Angular2和Asp.net core,遇到一个问题发布一个对象,这里是我的代码:

Service.ts 文件:

export class SubCategoryService {
//private headers: Headers;
constructor(private http: Http) {
//this.headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' });
// this.headers.append('Content-Type', 'application/json');
// this.headers.append('Accept', 'application/json');
}
public createItem = (subCategory: SubCategory): Observable<SubCategory> =>
{
let headers = new Headers();
headers.append('Content-Type', 'application/json');
let toAdd = JSON.stringify(subCategory);
return this.http.post("api/subcategory", toAdd, { headers: headers }).map((response: Response) => <SubCategory>response.json()).catch(this.handleError);

}
}

Component.ts 文件:

export class SubCategoryComponent {
constructor(private service: SubCategoryService) { }
subCategories: SubCategory[];
SubCategory: SubCategory = new SubCategory();
onPost() {
this.service.createItem(this.SubCategory).subscribe(
subCategory => this.subCategories.push(subCategory),
error => console.log(error),
() => console.log('Get all items completed'));
this.isLoading = true;

}
}

Asp.Net Core Controller

        [HttpPost]
public async Task<JsonResult> Post(SubCategory subCategory)
{
return new JsonResult("");
}

它用空对象击中我的 Controller ...请提供任何帮助。

也试过 postman 发帖没问题,可能是body中的信息有问题?

这是它确实有效的屏幕截图:

enter image description here

最佳答案

您正在以错误的格式发布到服务器。

您的 postman 请求提示您的服务器需要 x-www-form-urlencoded 格式,如下所示:

Id=5&Name=Test

并且您的 Angular 应用程序正在发送如下内容:

{"Id":5,"Name":"Test"}

因此,要么在客户端方法中放弃 JSON.stringify 并以查询方式构建表单数据(以及将 Content-Type 设置为 x-www-form-urlencoded),或者将 FromBodyAttribute 添加到您的后端操作中:

public async Task<JsonResult> Post([FromBody]SubCategory subCategory)

关于Angularjs Post方法到asp.net core传递空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39026598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com