0

Web API プロジェクトでルーティングを設定する方法に関するヒントを探しています。次のようなメソッドで Resident というコントローラーをセットアップしました。

public ResidentModel GetResidentInfo(int resId)
{
    //code to return ResidentModel object 

}

route.config ファイルでこのメソッドにマップするために、次のことを試みました。

 routes.MapRoute(
            name: "Resident",
            url: "{controller}/{action}/{id}",
            defaults: new {  id = UrlParameter.Optional }
            );

私はさまざまな方法でこのメソッドにアクセスしようとしています:

http://localhost/resident/1 or 
http://localhost/resident/GetResidentInfo/1 etc... 

作成したメソッドにアクセスしようとすると、コントローラーが認識されないため、コントローラーをセットアップしてそのコントローラーメソッドにマッピングするプロセスに関するガイダンスを探しています。前もって感謝します。

4

1 に答える 1

4

まず、コントローラー クラスを呼び出してResidentController( だけでなくResident) から継承するApiController必要があります (実際には を実装する必要がありますがIHttpController、そのクラスから継承するのが最も簡単な方法です)。

次に、MapHttpRoute代わりにMapRouteWeb API コントローラーを使用する必要があります。

次に、idルートのパラメーターがアクションのパラメーターと一致しません。以下のようなルートがある場合は、2 番目の URL にアクセスできるはずです。

routes.MapHttpRoute(
    name: "WithAction",
    routeTemplate: "{controller}/{action}/{resId}");

そして、これは最初のものと一致します:

routes.MapHttpRoute(
    name: "DefaultAction",
    routeTemplate: "{controller}/{resId}",
    defaults: new { action = "GetResidentInfo" });
于 2012-11-28T00:48:16.267 に答える