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 请求以及是否有任何错误
我希望这能帮助你
