从API控制器调用自定义方法

时间:2013-01-12 12:58:41

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

我想在我的Web API控制器中创建一个自定义方法,所以不是只返回我可以在参数中传递的所有数据,例如我的控制器名为StandingController,我想创建一个名为GetStandingsBySeason(字符串季节)的方法。我已将WebApiConfig更改为如下所示:

config.Routes.MapHttpRoute(
            "DefaultApi",
            "api/{controller}/{id}",
            new { id = RouteParameter.Optional }
        );

        config.Routes.MapHttpRoute(
            "DefaultApiWithAction",
            "api/{controller}/{action}/{id}",
            new { id = RouteParameter.Optional }
        );

这是我控制器中的方法:

public IEnumerable<StandingDTO> GetStandingsBySeason(string season)
    {
        return _repository.GetStandingsBySeason(season).Select(Mapper.Map<StandingDTO>);
    }

在我的前端,我这样称呼它:

$.getJSON("/api/standing/GetStandingsBySeason/2011", self.standings);

但这个方法永远不会被调用,任何人都可以对我做错了吗?

1 个答案:

答案 0 :(得分:2)

看起来您的配置错误:您的模板是

"api/{controller}/{action}/{id}"

但该方法获取了名为season的参数,因此您可以按以下方式调用它:

$.getJSON("/api/standing/GetStandingsBySeason?season=2011", self.standings);

或者您可以将路线模板修改为

"api/{controller}/{action}/{season}"