网站搜索

angularjs - Typescript Angular 2 Http 向 C# MVC 发送 POST 请求


尝试通过 Typescript 服务传递负载到 http.post

我的 .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;
}

答案#1

我不知道你整个网站是如何运作的,但也许这能帮到你:

首先,我在你的代码中看到一个错误,你应该在 post 中传递 bodyString,而不是 body

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 返回一个 Observable,所以当有人订阅这个 observable 时,post 就会被执行,就像这样

//...somewhere in your code ...
service.saveEdits(body).subscribe((animals: Animal[]) => console.log(animals));

同时打开 Chrome 调试器(或你使用的任何浏览器),在网络选项卡中查看是否执行了 post 请求以及是否有任何错误

我希望这能帮助你