2013-01-12 63 views
1

我想在我的Web API控制器中創建一個自定義方法,而不僅僅是返回所有可以傳入參數的數據,例如我的控制器被稱爲StandingController,我想創建一個名爲GetStandingsBySeason的方法(絃樂季)。我已經改變了我WebApiConfig到看起來像這樣:從API控制器調用自定義方法

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); 

但是這個方法永遠不會被調用,任何人都可以闡明我在做什麼錯?

回答

2

看起來像你的配置是錯誤的:你的模板是

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

但該方法被調用賽季的參數,所以你可以通過以下方式調用它:

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

或者你可以修改你的路由模板爲

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