1

コードを処理するカスタム ルートを使用することは可能ですか?
たとえば、クライアントがサーバーを要求しhttp://server.com/api/v1/json/profile/、私のコードが呼び出しApiController、パラメータをMyAction持つアクション、、。version=1format=jsonaction=profile

4

2 に答える 2

1

「アクション」パラメーターの名前を別の名前に変更することから始めます。そうしないと、ルートが非常に混乱します(目的と呼ぶのでしょうか?)。また、次のようなものがうまくいくと思います:

routes.MapRoute(
    // name of your route
    "MyRoute",

    // route template
    "api/v{version}/{format}/{purpose}",

    // default route values
    new {
        controller = "ApiController",
        action = "MyAction",
    },

    // constraints placed on parameters (make sure they are valid) 
    new {
        version = @"^\d+$",            // number only (can also include decimals)
        format = @"^(json|text|xml)$", // if you want filtering...
    }
);

それで:

public ApiController : Controller
{
  public ActionResult MyAction(Int32 version, String format, String purpose)
  {
    throw new NotImplementedException();
  }
}
于 2012-04-09T13:14:32.027 に答える
1

このようなもの?コントローラーのアクションと競合しないように、アクションには別のパラメーター名を使用する必要があります。

.MapRoute("name", "api/v{version}/{format}/{_action}", new { controller = "ApiController", action = "MyAction" });

EDITはあなたが望むようにバージョンを動かしました。

于 2012-04-09T13:09:15.230 に答える