不使用jQuery對Web API接口POST,PUT,DELETE數據


前些天,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();
                });
Source Code

 

視圖代碼:

 

程序運行,看看是否能正常運行,數據庫是否有數據插入?

 

下面演示更新操作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);
        }
Source Code


視圖:

 
實時演示:

 下面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");
        }
Source Code

 

看到否,在上圖中的標記#2中,DeleteAsync方法,它是不接受一個復雜Complex對type。為了不需要對前些天的程序作過多的修改,因此Insus.NET只得對Web API進行修改。這也許是設計Web API時欠缺的思考。

為API接口添加多一個方法重載:


這個Web API來自《創建與使用Web APIhttp://www.cnblogs.com/insus/p/5019088.html

 
添加刪除視圖DeleteDemo.cshtml:

 

刪除功能實時演示:




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM