我应该如何将多个DateTime参数传递给ApiController方法?

时间:2014-02-10 11:40:38

标签: c# asp.net-mvc-4 asp.net-web-api asp.net-mvc-routing

(我正在使用WebApi 4.0.20710.0,使用框架4.0。我不确定这是否重要,但我们还不允许将服务器升级到4.5)

我想做的就是这样打电话:

http://domain/api/Books/Outstanding/2013-01-01/2014-01-01

在我的ApiController我有一个类似的方法:

/// <summary>
/// Get a list of books that were outstanding between the start and end dates.
/// </summary>
public IEnumerable<BookDto> GetOutstanding(DateTime start, DateTime end)
{
    return _repository.GetOutstanding(start, end);
}

在我的RouteConfig中,我有一条这样定义的路线:

routes.MapRoute(
    name: "ActionWithStartAndEnd",
    url: "{controller}/{action}/{start}/{end}"
);

然而这一切都不起作用。我最终得到的错误信息只是"No action was found on the controller 'Books' that matches the request."

我怀疑我做错了一些简单的事情,和/或一般都误解了一些关于路由的事情。我该怎么做?

1 个答案:

答案 0 :(得分:1)

我是个白痴。

路由不属于RouteConfig,它属于WebApiConfig,它应采用以下形式:

config.Routes.MapHttpRoute(
    name: "ActionWithStartAndEnd",
    routeTemplate: "api/{controller}/{action}/{start}/{end}"
);