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;
}

Typescript Angular 2 Http post to C# MVC

我不知道你的整个网站是如何工作的,但也许这有助于你:

首先我看到一个错误在你的代码,你应该传递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调试器(或你使用的任何浏览器),并在网络选项卡中看到,如果帖子被执行,如果有任何错误

希望这对你有帮助