Передача параметров строки запроса без использования соглашений OData?

Есть ли способ передать параметры строки запроса контроллеру ASP.NET MVC4 Web Api без используя изложенные здесь соглашения OData?

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/
    public HttpResponseMessage Get(int id, int offset = 0, int count = 0)

И каждый раз, когда я передаю следующий запрос:

http://localhost/api/v1/category/1?offset=10

Я получаю следующую ошибку:

В контроллере «Категория» не найдено действие, соответствующее запрос.

Есть предложения по разумной работе со строками запросов в ASP.NET MVC4 Web Api?

8
задан abatishchev 23 May 2013 в 19:55
поделиться