【发布时间】:2012-06-09 03:41:16
【问题描述】:
有没有办法在不使用此处概述的 OData 约定的情况下将查询字符串参数传递给 ASP.NET MVC4 Web Api 控制器?
http://www.asp.net/web-api/overview/web-api-routing-and-actions/paging-and-querying
我有一些使用 Dapper 构建的存储库方法,它们不支持 IQueryable,并且希望能够在不使用 OData 约定的情况下手动对它们进行分页,但是每当我尝试使用传统的 ASP.NET 方式时,我都会得到“找不到路由" 错误。
例如,这是一条路线:
context.Routes.MapHttpRoute(
name: "APIv1_api_pagination",
routeTemplate: "api/v1/{controller}/{id}",
defaults: new { area = AreaName, controller = "category", offset = 0, count = 100});
这是要匹配的签名
public class CategoryController : ApiController
{
// GET /api/<controller>
public HttpResponseMessage Get(int id, int offset = 0, int count = 0)
每当我通过以下查询时:
http://localhost/api/v1/category/1?offset=10
我收到以下错误:
在控制器“类别”上找不到与 请求。
关于如何在 ASP.NET MVC4 Web Api 中合理使用查询字符串有什么建议吗?
【问题讨论】:
-
我相信这可能是 WebAPI 中的一个错误。您能否尝试将您的操作方法参数更改为不具有默认值(并发出带有查询字符串中所有必需值的请求)。
-
当然,marcind,我会试试看的。
标签: c# asp.net-mvc-4 asp.net-web-api asp.net-mvc-routing