如果ajax请求数量增长,asp.net mvc基于JsonResult的控制器操作无法满足高级ajax请求,可以使用Web API来处理AJAX请求

注册Web API路由

routes.MapHttpRoute(
name:"defaultApi",
routeTemplate:"api/{controller}/{id}",
defaults:new{id=RouteParameter.Optional}
);

REST风格架构

请求方式

GET 查询资源

PUT 更新

POST 创建

DELETE 删除

数据分页与查询

使用URL参数表达式

$filter 过滤符合布尔条件的值

$orderby 排序的字段

$skip 跳过几个记录

$top 返回前几个记录

例如:

/api/action?$top=5&$skip=10&$orderby=id&filter=xxoo

异常处理

继承System.Web.Http.Filter.IExceptionFilter接口或者ExceptionFilterAttribute创建异常过滤器,重写OnException()方法

usingSystem.Diagnostics;
usingSystem.Web.Http.Filters;
publicclassCustomExceptionFilter:ExceptionFilterAttribute
{
publicoverridevoidOnException(HttpActionExecutedContextcontext)
{
//修改(HttpActionExecutedContext参数来重写发送给客户端的HTTP应答消息
if(context.Response==null)
{
context.Response=neewHttpResponseMessage();
}
context.Response.StatusCode=HttpStatusCode.NotImplemented;
context.Response.Content=newStringContent("自定义消息");
base.OnException(conttext);
}
}

注册异常过滤器

可以直接在控制器上用,也可以在Global中去注册

staticvoidConfigureApi(HttpConfigurationconfig)
{
config.Filters.Add(newCustomExceptionFilter());
}