Typescript Angular 2 Http post to C# MVC
本文关键字:to MVC post Http Angular Typescript | 更新日期: 2023-09-27 18:13:02
试图通过Typescript服务传递有效负载给http。邮报》
我的。ts代码:
saveEdits(body: Object): Observable<Animal[]> {
let bodyString = JSON.stringify(body);
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.post(this.UrlToEdit, body, options)
.map((res: Response) => res.json())
.catch((error: any) => console.log("Edited value did not been saved"));
}
提到
private UrlToEdit = '/Home/Edit';
虽然该值由服务决定,但c#控制器似乎没有启动。下面是它的代码:
[HttpPost]
public async Task<Boolean> Edit([Bind(Include = "animalID,animalName,animalHabitat,animalClass")] Animal animal)
{
if (ModelState.IsValid)
{
db.Entry(animal).State = EntityState.Modified;
await db.SaveChangesAsync();
return true;
}
return false;
}
我不知道你的整个网站是如何工作的,但也许这有助于你:
首先我看到一个错误在你的代码,你应该传递bodyString在post而不是主体
return this.http.post(this.UrlToEdit, bodyString, options)
.map((res: Response) => res.json())
.catch((error: any) => console.log("Edited value did not been saved"));
第二个post返回一个可观察对象,所以当有东西订阅了这个可观察对象时,post就会执行,就像这样
//...somewhere in your code ...
service.saveEdits(body).subscribe((animals: Animal[]) => console.log(animals));
也打开chrome调试器(或你使用的任何浏览器),并在网络选项卡中看到,如果帖子被执行,如果有任何错误
希望这对你有帮助