不使用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 API》http://www.cnblogs.com/insus/p/5019088.html
添加删除视图DeleteDemo.cshtml:
删除功能实时演示:
不使用jQuery对Web API接口POST,PUT,DELETE数据的更多相关文章
- ASP.NET Web API 接口执行时间监控
软件产品常常会出现这样的情况:产品性能因某些无法预料的瓶颈而受到干扰,导致程序的处理效率降低,性能得不到充分的发挥.如何快速有效地找到软件产品的性能瓶颈,则是我们感兴趣的内容之一. 在本文中,我将解释 ...
- Web API接口之FileReader
Web API接口之FileReader *:first-child { margin-top: 0 !important; } body>*:last-child { margin-botto ...
- Winform混合式开发框架访问Web API接口的处理
在我的混合式开发框架里面,集成了WebAPI的访问,这种访问方式不仅可以实现简便的数据交换,而且可以在多种平台上进行接入,如Winform程序.Web网站.移动端APP等多种接入方式,Web API的 ...
- WebApi系列~通过HttpClient来调用Web Api接口~续~实体参数的传递
回到目录 上一讲中介绍了使用HttpClient如何去调用一个标准的Web Api接口,并且我们知道了Post,Put方法只能有一个FromBody参数,再有多个参数时,上讲提到,需要将它封装成一个对 ...
- Web API接口设计经验总结
在Web API接口的开发过程中,我们可能会碰到各种各样的问题,我在前面两篇随笔<Web API应用架构在Winform混合框架中的应用(1)>.<Web API应用架构在Winfo ...
- Web API 接口
Web API 接口 在给网站编写 JavaScript 代码时,也有很多可用的 API.您可以使用下面的接口(也称为对象的类型)列表,开发 Web 应用程序或网站. 关于包含这些接口的 API 列表 ...
- Http下的各种操作类.WebApi系列~通过HttpClient来调用Web Api接口
1.WebApi系列~通过HttpClient来调用Web Api接口 http://www.cnblogs.com/lori/p/4045413.html HttpClient使用详解(java版本 ...
- 如何让你的 Asp.Net Web Api 接口,拥抱支持跨域访问。
由于 web api 项目通常是被做成了一个独立站点,来提供数据,在做web api 项目的时候,不免前端会遇到跨域访问接口的问题. 刚开始没做任何处理,用jsonp的方式调用 web api 接口, ...
- Web API接口 安全验证
在上篇随笔<Web API应用架构设计分析(1)>,我对Web API的各种应用架构进行了概括性的分析和设计,Web API 是一种应用接口框架,它能够构建HTTP服务以支撑更广泛的客户端 ...
随机推荐
- 你必须知道的指针基础-7.void指针与函数指针
一.不能动的“地址”—void指针 1.1 void指针初探 void *表示一个“不知道类型”的指针,也就不知道从这个指针地址开始多少字节为一个数据.和用int表示指针异曲同工,只是更明确是“指针” ...
- .NET中STAThread和MTAThread
本文讨论在.NET中使用进程内COM组件时的公寓模型,以一个示例直观演示STAThread和MTAThread的作用和区别. 1. COM中的公寓 1.1 基本规则 公寓是COM组件的运行环境,日常生 ...
- 现代程序设计 网页前端开发作业(to 邹欣老师)
在一些著名的网站的搜索框上,会有一种“自动完成”功能. 比如google.百度和淘宝: 现在,我们来考虑如何实现这个功能. 第一步:模仿任意一个网站,编写一个类似的网页效果原型. 在这一步,不要估计开 ...
- JavaScript学习笔记之Array
数组的定义: 1,var arr=new Array(); -->数组是特殊的对象,typeOf的返回值是object arr[0] arr[1] ... 2,var arr=new ...
- UIColor 使用起来的坑
我们一般会用 UIColor 的RGB来生成颜色: [UIColor colorWithRed:220/255 green:220/255 blue:220/255 alpha:1.0];//这样生成 ...
- appledoc 使用brew命令安装使用
appledoc --project-name yushuyi12345677 --project-company "xiaoyu123" --company-id aaaa -- ...
- Docker学习笔记
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...
- Sublime Text执行js
Sublime Text执行js 在Build Sytem添加以下内容: { "cmd": ["node", "$file"], " ...
- Exception:HTTP Status 500 - org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
主要错误信息如下: HTTP Status 500 - org.apache.ibatis.binding.BindingException: Invalid bound statement (not ...
- 从2-3-4树到红黑树(下) Java与C的实现
欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 相关博客: 从2-3-4树到红黑树(上) 从2-3-4树到红黑树(中) 1. 实现技 ...