OData V4 系列 Ajax请求 CRUD
上一篇已经完成了服务创建,本篇主要介绍如何通过Ajax请求Odata服务,OData操作主要有 Get、Post、Patch、Put、Delete等操作。
Post 操作
public async Task<IHttpActionResult> Post(Product product)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
_dbContext.Products.Add(product);
await _dbContext.SaveChangesAsync();
return Created(product);
}
function addPro() {
var pro = {
Name: "OData Create",
Price: 1024,
Category: "IT"
};
//创建产品信息
$.ajax({
url: "/Odata/Products",
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "JSON",
data: JSON.stringify(pro),
success: function (r) {
alert(r.Id);
},
error: function (e) {
debugger;
}
});
}
Patch 操作 只修改有变化的实体属性
public async Task<IHttpActionResult> Patch([FromODataUri] int key, Delta<Product> product)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var entity = await _dbContext.Products.FindAsync(key);
if (entity == null)
{
return NotFound();
}
product.Patch(entity);
try
{
await _dbContext.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
throw;
}
return Updated(entity);
}
var pro = {
SupplierId: 2
};
//创建产品信息
$.ajax({
url: "/Odata/Products(" + id + ")",
type: "Patch",
contentType: "application/json; charset=utf-8",
dataType: "JSON",
data: JSON.stringify(pro),
success: function (r) {
debugger;
},
error: function (e) {
debugger;
}
});
Update 操作,修改所有实体
public async Task<IHttpActionResult> Put([FromODataUri] int key, Product update)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
if (key != update.Id)
{
return BadRequest();
}
_dbContext.Entry(update).State = EntityState.Modified;
try
{
await _dbContext.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!Exists(key))
{
return NotFound();
}
else
{
throw;
}
}
return Updated(update);
}
Delete 操作
public async Task<IHttpActionResult> Delete([FromODataUri] int key)
{
var product = await _dbContext.Products.FindAsync(key);
if (product == null)
{
return NotFound();
}
_dbContext.Products.Remove(product);
await _dbContext.SaveChangesAsync();
return StatusCode(HttpStatusCode.NoContent);
}
function deletePro(id) {
$.ajax({
url: "/Odata/Products(" + id + ")",
contentType: "application/json; charset=utf-8",
type: "Delete",
success: function (r) {
debugger;
},
error: function (r) {
debugger;
}
});
}
OData V4 系列 Ajax请求 CRUD的更多相关文章
- OData V4 系列 Action 与 Function
OData 学习目录 了解过WebApi的都知道,WebApi默认方法 Get.Post.Put,如果增加其它过多Post方法即不能识别,还需增加其它配制,请求的Url还需加上Controller及A ...
- OData V4 系列 查询操作
OData 学习目录 对OData的操作,主要是查询,下面把相关的查询情况列出来,供参考学习,每个操作都有对应的截图,便于理解 默认查询 $expand 查询导航属性关系 ,查询Product相关的 ...
- OData V4 系列 .net应用
OData 学习目录 添加 OData Client Code Generator 扩展 添加OData T4生成工具 修改 T4 模板的 MetadataDocumentUri 运行Web项目,之后 ...
- OData V4 系列 服务创建
OData 学习目录 创建应用程序 添加引用 install-package entityframework . Install-Package Microsoft.AspNet.Odata . In ...
- OData V4 学习目录
开放数据协议(Open Data Protocol,缩写OData)是一种描述如何创建和访问Restful服务的OASIS标准. Open Data Protocol (开放数据协议,OData)是用 ...
- SpringMVC经典系列-13使用SpringMVC处理Ajax请求---【LinusZhu】
注意:此文章是个人原创,希望有转载须要的朋友们标明文章出处,假设各位朋友们认为写的还好,就给个赞哈,你的鼓舞是我创作的最大动力,LinusZhu在此表示十分感谢,当然文章中如有纰漏,请联系linusz ...
- django系列6--Ajax05 请求头ContentType, 使用Ajax上传文件
一.请求头ContentType ContentType指的是请求体的编码类型,常见的类型共有三种: 1.application/x-www-form-urlencoded 这应该是最常见的 POST ...
- 使用ASP.NET Web API 2创建OData v4 终结点
开放数据协议(Open Data Protocol[简称OData])是用于Web的数据访问协议.OData提供了一种对数据集进行CRUD操作(Create,Read,Update,Delete)的统 ...
- [转]使用ASP.NET Web API 2创建OData v4 终结点
本文转自:http://www.cnblogs.com/farb/p/ODataAspNetWebAPI.html 开放数据协议(Open Data Protocol[简称OData])是用于Web的 ...
随机推荐
- SSIS Design4: 处理外键
假设一种场景:有一个ETL系统,通过记录数据最后更新的时间,对数据进行增量更新.如果Data Warehouse中存在有外键关系的两个表,Group(GroupID,StudentID,GroupDa ...
- jQuery 2.0.3 源码分析 Deferred概念
JavaScript编程几乎总是伴随着异步操作,传统的异步操作会在操作完成之后,使用回调函数传回结果,而回调函数中则包含了后续的工作.这也是造成异步编程困难的主要原因:我们一直习惯于“线性”地编写代码 ...
- 解密jQuery内核 DOM操作的核心buildFragment
文档碎片是什么 http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-B63ED1A3 DocumentFragment is a & ...
- Jetstrap 在线构建 Bootstrap 的工具
Jetstrap 是一个 100% 基于 Web 的 Twitter Bootstrap 构建工具,无需下载软件,只需登录并构建即可.并且别人可以访问你构建的产品.
- Qt with OpenCascade
Qt with OpenCascade 摘要Abstract:详细介绍了如何在Qt中使用OpenCascade. 关键字Key Words:Qt.OpenCascade 一.引言 Introducti ...
- WPF 浏览文件夹,获取其路径
public void GetPath(System.Windows.Controls.TextBox TB) { FolderBrowserDialog FBD = new FolderBrowse ...
- javascript运动系列第六篇——轨迹和投掷
× 目录 [1]运动轨迹 [2]拖拽轨迹 [3]投掷 前面的话 一般地,不同的运动形式会产生不同的轨迹.但仅凭肉眼去识别运动轨迹,其实并不是很直观.因此,在页面中显示运动轨迹,是一个重要的问题.物体初 ...
- HTML中哪些标签的值会被提交到服务器呢?
<form> <input name="">标签 <select name="">标签 <textarea name= ...
- IOS开发之自定义Button(集成三种回调模式)
前面在做东西的时候都用到了storyboard,在今天的代码中就纯手写代码自己用封装个Button.这个Button继承于UIView类,在封装的时候用上啦OC中的三种回调模式:目标动作回调,委托回调 ...
- 我的angularjs源码学习之旅1——初识angularjs
angular诞生有好几年光景了,有Google公司的支持版本更新还是比较快,从一开始就是一个热门技术,但是本人近期才开始接触到.只能感慨自己学习起点有点晚了.只能是加倍努力赶上技术前线. 因为有分析 ...