前些天,Insus.NET有演示Web API接口的操作:
《怎樣操作WebAPI接口(顯示數據)》http://www.cnblogs.com/insus/p/5670401.html
《ASP.NET MVC對WebAPI接口操作(添加,更新和刪除)》http://www.cnblogs.com/insus/p/5673641.html
但是,有網友說,不想使用jQuery,全部以ASP.NET MVC來實現。Ok,那來看看,先來實現POST的功能,即是往Web API添加數據。
在控制器中,創建兩個Action,即是視圖Action,另一個是POST的Action:

HttpClient client = new HttpClient(); HttpContent httpcontent = new StringContent(size.ToJson(), System.Text.Encoding.UTF8, "application/json"); client.PostAsync("http://localhost:9001/api/size", httpcontent) .ContinueWith((postTask) => { postTask.Result.EnsureSuccessStatusCode(); });
下面演示更新操作PUT,在控制器中,創建Action,一個顯示數據,另一個更新數據:

public ActionResult PutDemo(int id) { var sizes = ApiUtility.Get<Size>("http://localhost:9001/api/size/" + id); var model = sizes.FirstOrDefault(); return View(model); } [HttpPost] public ActionResult PutDemo(Size size) { HttpClient client = new HttpClient(); HttpContent httpcontent = new StringContent(size.ToJson(), System.Text.Encoding.UTF8, "application/json"); client.PutAsync("http://localhost:9001/api/size", httpcontent) .ContinueWith((postTask) => { postTask.Result.EnsureSuccessStatusCode(); }); return RedirectToAction("PutDemo", size.Size_nbr); }
下面Insus.NET再把Delete的功能實現完,在實現刪除這個功能時,出現一點點困難:
先在控制器創建操作Action:

public ActionResult DeleteDemo(int id) { var sizes = ApiUtility.Get<Size>("http://localhost:9001/api/size/" + id); var model = sizes.FirstOrDefault(); return View(model); } [HttpPost] public ActionResult DeleteDemo(Size size) { HttpClient client = new HttpClient(); client.DeleteAsync("http://localhost:9001/api/size/" + size.Size_nbr) .ContinueWith((postTask) => { postTask.Result.EnsureSuccessStatusCode(); }); return RedirectToAction("ShowApiData1"); }
看到否,在上圖中的標記#2中,DeleteAsync方法,它是不接受一個復雜Complex對type。為了不需要對前些天的程序作過多的修改,因此Insus.NET只得對Web API進行修改。這也許是設計Web API時欠缺的思考。
為API接口添加多一個方法重載:
這個Web API來自《創建與使用Web API》http://www.cnblogs.com/insus/p/5019088.html