1

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

しかし、メソッドが呼び出されることはありません。誰かが私がこれで間違っていることに光を当てることができますか?

4

1 に答える 1

2

設定が間違っているようです: テンプレートは

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

ただし、メソッドは Season というパラメーターを取得するため、次のように呼び出すことができます。

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

または、ルート テンプレートを次のように変更できます。

"api/{controller}/{action}/{season}"
于 2013-01-12T13:17:59.793 に答える