博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
让Asp.Net WebAPI支持OData查询,排序,过滤。
阅读量:6454 次
发布时间:2019-06-23

本文共 2779 字,大约阅读时间需要 9 分钟。

 让Asp.Net WebAPI支持OData后,就能支持在url中直接输入排序,过滤条件了。

一.创建Asp.Net WebAPI项目:

 

二.使用NuGet安装Asp.Net WebAPI 2.2和OData包

 

三.修改WebAPIConfig.cs:

using System;using System.Collections.Generic;using System.Linq;using System.Web.Http;using System.Net.Http.Formatting;using System.Net.Configuration;namespace ProjectManagementWebAppV3{    public static class WebApiConfig    {        public static void Register(HttpConfiguration config)        {            // Web API configuration and services            // Web API routes            config.MapHttpAttributeRoutes();            config.Routes.MapHttpRoute(                name: "DefaultApi",                routeTemplate: "api/{controller}/{id}",                defaults: new { id = RouteParameter.Optional }            );            config.Formatters.JsonFormatter.AddQueryStringMapping("$format", "json", "application/json");             config.Formatters.XmlFormatter.AddQueryStringMapping("$format", "xml", "application/xml");            config.EnableQuerySupport();        }    }}

主要添加红色粗体字:config.EnableQuerySupport();

这是存在于System.Web.Http.OData.dll里的一个静态扩展方法,表示在项目中启用OData查询。

 

四.修改ProjectManagementControler.cs:

using System;using System.Collections.Generic;using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; using ProjectManagementWebAppV3.Models; using System.Web.Http.OData.Query; using ProjectManagementWebAppV3.Utility; using System.Data; using System.Data.SqlClient; using System.Configuration; namespace ProjectManagementWebAppV3.Controllers { public class ProjectManagentController : ApiController { private static List
projectList = null; static ProjectManagentController() { projectList = new List
{ new ProjectModel { id=1, ProjectName = "项目1", MileStones = "2013年1月开始,3月组装测试,6月功能测试,10月上线;" }, new ProjectModel { id=2, ProjectName = "项目2", MileStones = "2013年3月开始,6月组装测试,9月功能测试,12月上线;" }, new ProjectModel { id=3, ProjectName = "项目3", MileStones = "2013年7月开始,9月组装测试,11月功能测试,12月上线;" } }; } ///
/// 获取全部数据 /// ///
[Queryable(AllowedQueryOptions = AllowedQueryOptions.All)] public List
Get() { return projectList; } } }

 主要在Get方法上增加红色粗体字的属性:[Queryable(AllowedQueryOptions = AllowedQueryOptions.All)]

 从下表可以看到,AllowedQueryOptions枚举支持的操作符号列表:

public enum AllowedQueryOptions    {        None = 0,        Filter = 1,        Expand = 2,        Select = 4,        OrderBy = 8,        Top = 16,        Skip = 32,        InlineCount = 64,        Supported = 127,        Format = 128,        SkipToken = 256,        All = 511,    }

 

五.运行示例:

lt 10&$orderby=id desc

表示返回id小于10,并按id倒序的前2条数据。

这看起来并不难,但好处是,它们都不需要写任何代码,也不用写存储过程,不用写任何一个特别的逻辑去支持这些功能,全部都由OData框架来提供的。

也就是说,用了OData,为搜索、过滤、分页的时候提供了一个很省事的选项。

 

六.代码下载:

packages和bin目录太大无法上传,只把项目代码打了个包。

 

转载地址:http://nlyzo.baihongyu.com/

你可能感兴趣的文章
EasyUI datagrid easyui datagrid +dialog 加载 可直接运行 七
查看>>
HTTP 与 Post
查看>>
iOS开发本地推送(iOS10)UNUserNotificationCenter
查看>>
考研准备
查看>>
elementUI默认样式修改不成功的问题
查看>>
Win8 使用经验之飞鸽传书
查看>>
How to set up PyQt4 for python 3.2 in Ubuntu11.10
查看>>
P1047 校门外的树
查看>>
poj1472[模拟题]
查看>>
c# 两个数组比较,将重复部分去掉,返回不重复部分
查看>>
支持IE6的树形节结构TreeTable实际应用案例
查看>>
DFA和NFA的区别
查看>>
并发检测主机ip存活脚本
查看>>
Leetcode 118 杨辉三角
查看>>
VBA中级班课时1小结
查看>>
PLS-00371: 'PAGEQUERY_PACK.CURSORTYPE' 最多允许有一个声明
查看>>
upc组队赛5 Ingenious Lottery Tickets【排序】
查看>>
HTML初级课程 (自学可懂)
查看>>
Error in deleting blocks.
查看>>
Linux 用户和用户组的命令
查看>>