ASP.NET MVC を使用した複数のパラメータによるルーティング 質問する

ASP.NET MVC を使用した複数のパラメータによるルーティング 質問する

当社では自社製品用の API を開発しており、ASP.NET MVC の使用を検討しています。API を設計する際に、ユーザーが XML 形式で API から情報を要求できるように、次のような呼び出しを使用することにしました。

http://ws.audioscrobbler.com/2.0/?method=artist.getimages&artist=cher&api_key=b25b959554ed76058ac220b7b2e0a026

ご覧のとおり、複数のパラメータが渡されます (つまり、およびartist) api_key。ASP.NET MVC では、がアクションartistになりますが、アクションに複数のパラメータを渡すにはどうすればよいでしょうか?controllergetImages

上記の形式を使用してもこれは可能ですか?

ベストアンサー1

アクション メソッドにパラメーターを追加するだけで、MVC でパラメーターが直接サポートされます。次のようなアクションがあるとします。

public ActionResult GetImages(string artistName, string apiKey)

MVC は次のような URL を指定するとパラメータを自動的に入力します。

/Artist/GetImages/?artistName=cher&apiKey=XXX

もう 1 つの特別なケースは、「id」という名前のパラメータです。ID という名前のパラメータは、クエリ文字列ではなくパスに配置できます。次のようになります。

public ActionResult GetImages(string id, string apiKey)

次のような URL で正しく入力されます。

/Artist/GetImages/cher?apiKey=XXX

さらに、より複雑なシナリオの場合は、MVC がアクションを見つけるために使用するルーティング ルールをカスタマイズできます。global.asax ファイルには、カスタマイズ可能なルーティング ルールが含まれています。デフォルトでは、ルールは次のようになります。

routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );

次のようなURLをサポートしたい場合

/Artist/GetImages/cher/api-key

次のようなルートを追加できます:

routes.MapRoute(
            "ArtistImages",                                              // Route name
            "{controller}/{action}/{artistName}/{apikey}",                           // URL with parameters
            new { controller = "Home", action = "Index", artistName = "", apikey = "" }  // Parameter defaults
        );

そして、上記の最初の例のような方法です。

おすすめ記事