1.新建MVC项目,安装OData

Install-Package Microsoft.AspNet.WebApi.OData -Version 4.0.0

2.新建WebAPI Controller 示例代码如下:

public class ArticleController : ApiController
{
private readonly IList<Article> _Article; public ArticleController()
{
_Article = new List<Article>
{
new Article { ArticleID = "1 ", Title = "跨平台移动开发 Android使用JPush推送消息", CreateTime = new DateTime(, , ), ArticleBody = "Xuijs超轻量级的框" },new Article { ArticleID = "", Title = "跨平台移动开发 Xuijs超轻量级的框架Style CSS属性用法", CreateTime = new DateTime(, , ), ArticleBody = "使用Geolocation基于所在地理位置坐标调用百度地图API效果图示例代码 PhoneGap Device Ready Example 地图显示区 Longitude经度: 经度:显示区 Latitude 纬度: 纬度显示区 清除地图坐标 " }
};
}
[Cors("http://localhost:27055")]
[Queryable(AllowedQueryOptions = AllowedQueryOptions.All)]
public IQueryable<Article> Get()
{
return _Article.AsQueryable();
}
}

3.在其它页面,使用OData 页面调用数据

@{
ViewBag.Title = "Index";
} <h2>Asp.Net MVC Web Api OData Web 数据存储</h2> <h3>此页面可加入离线配置清单</h3>
<script src="~/Content/Scripts/jquery.min.js"></script>
<script type="text/javascript"> var db = window.openDatabase("MVCWEBDB", "1.0", "MvcWebDataBase", (1024 * 1024))
db.transaction(function (tx) {
tx.executeSql("CREATE TABLE Article(ArticleID int UNIQUE,Title TEXT,CreateTime TEXT,ArticleBody TEXT)");
});


var url = "http://localhost:17392/api/article?$top=10&$format=json"; $.get(url, function (data) {
$.each(data, function (i, item) {
db.transaction(function (tx) {
tx.executeSql("insert into Article(ArticleID,Title,CreateTime,ArticleBody) values (?,?,?,?)", [item.ArticleID, item.Title, item.CreateTime, item.ArticleBody]);
});
$("#info").append(
"<div>" + item.ArticleID + "</div>" +
"<div>" + item.Title + "</div>" +
"<div>" + item.CreateTime + "</div>" +
"<div>" + item.ArticleBody + "</div><hr/>");
});
}); //db.transaction(function (tx) {
// tx.executeSql("insert into News(id,title) values (?,?)", [2, "acb"]);
//});
db.transaction(function (tx) {
tx.executeSql("select * from news", [], function (tx, rs) {
for (var i = 0; i < rs.rows.length; i++)
{ //document.write(rs.rows.item(i)["title"] + "<br/>");
}
}, function (tx) { });
});
</script>
<div id="info"></div>

4.客户端使用Web DataBase存放OData 获取的数据,离线浏览本地数据

声明:本博客高度重视知识产权保护,发现本博客发布的信息包含有侵犯其著作权的链接内容时,请联系我,我将第一时间做相应处理,联系邮箱ffgign@qq.com

作者:Mark Fan (小念头)    来源:http://cube.cnblogs.com
说明:未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有疑问,可以通过 ffgign@qq.com 联系作者,本文章采用 知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可

主攻ASP.NET MVC4.0之重生:Asp.Net MVC WebApi OData的更多相关文章

  1. 主攻ASP.NET MVC4.0之重生:ASP.NET MVC使用JSONP

    原文:主攻ASP.NET MVC4.0之重生:ASP.NET MVC使用JSONP 原文地址 http://www.codeguru.com/csharp/.net/net_asp/using-jso ...

  2. 主攻ASP.NET MVC4.0之重生:ASP.NET MVC Web API

    UserController代码: using GignSoft.Models; using System; using System.Collections.Generic; using Syste ...

  3. 主攻ASP.NET MVC4.0之重生:Jquery Mobile 列表

    代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title ...

  4. 主攻ASP.NET MVC4.0之重生:Jquery Mobile 表单元素

    相关代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <tit ...

  5. 主攻ASP.NET MVC4.0之重生:Jquery Mobile 按钮+对话框使用

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  6. 主攻ASP.NET MVC4.0之重生:CheckBoxListHelper和RadioBoxListHelper的使用

    在项目中新建Helpers文件夹,创建CheckBoxListHelper和RadioBoxListHelper类. CheckBoxListHelper代码 using System; using ...

  7. 主攻ASP.NET MVC4.0之重生:MVC Controller修改Controller.tt模版,自动添加版本注释信息

    第一步找到MVC 4.0 CodeTemplates 一般路径在:C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Ite ...

  8. 主攻ASP.NET MVC4.0之重生:上下滑动屏幕动态加载数据

                @{ ViewBag.Title = "Index"; } <!DOCTYPE html> <html> <head> ...

  9. 主攻ASP.NET MVC4.0之重生:使用反射获取Controller的ActionResult

    示例代码 public ActionResult TypeOfForName() { Type typeinfo = typeof(CustomerClassController); //typeof ...

随机推荐

  1. easyui---基础组件:panel

    加载easyui有两种方式:1种是html方式加载,1种是js加载. 要加载内容非常多时,用js,如果加载的东西比较少,用html就可以了. panel组件:面板 就是头 身展示 ,一个滚动条,几个关 ...

  2. 处理 Java Tomcat 的“Cannot allocate memory”错误

    参考:https://www.cnblogs.com/rabbitpei/p/6738671.html 启动tomcat报错如下 临时生效 echo 1 > /proc/sys/vm/overc ...

  3. Nginx防止恶意域名解析

    为了防止别人恶意将大量域名解析到自己的网站上面.我们可以对nginx做防止恶意域名解析,这样就只能通过自己的域名访问网站,其他域名就会显示错误500 打开Nginx配置文件nginx.conf,在原来 ...

  4. MySQL InnoDB的存储结构总结

    从物理意义上来讲,InnoDB表由共享表空间.日志文件组(redo文件组).表结构定义文件组成.若将innodb_file_per_table设置为on,则系统将为每一个表单独的生成一个table_n ...

  5. Python:正则表达式的一些例子

    #匹配电话号码(前面3/4-后面7-8): '\d{3,4}-\d{7,8}' #匹配QQ号(从号码1000开始第一位不能为0): '[1,9][0,9]{4}' #匹配身份证(15位数或者18位,考 ...

  6. mount --bind 的妙用

      在固件开发过程中常常遇到这样的情况:为测试某个新功能,必需修改某个系统文件.而这个文件在只读文件系统上(总不能为一个小小的测试就重刷固件吧),或者是虽然文件可写,但是自己对这个改动没有把握,不愿意 ...

  7. Best Cow Line---poj3617(贪心)

    题目链接:http://poj.org/problem?id=3617 题意:有n头牛.刚开始有一个序列.现在想要重新排列.每次从原始的序列头部和尾部取出一个取出一个放到新的序列尾部.最后使得得到的新 ...

  8. PHP主动断开与浏览器的连接

    以前整理过一篇<关于PHP连接处理中set_time_limit().connection_status()和ignore_user_abort()深入解析>,是解说浏览器client断开 ...

  9. UITextField输入中文

    [self.rightTF addTarget:self action:@selector(rightTFValueChange:) forControlEvents:UIControlEventEd ...

  10. OA系统部署短信过程

    安装dotNetFx40_Client_setup.exe插件 安装mysql_installer_community_V5.6.21.1_setup.1415604646.msi数据库 根据数据库版 ...