2012-04-09 4 views
1

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

答えて

1

このようなものはありますか?アクションには異なるパラメーター名を使用する必要があるため、コントローラーのアクションと競合することはありません。バージョンは、あなたが望んでいたように動作作っ

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

EDIT

+0

あなたは 'MapRoute'を意味しましたか? –

+0

はい:)申し訳ありません - それはあなたの頭の上からやって来るために得られるものです。 – Brendan

1

"action"パラメータの名前を変更することから始めます。それ以外の場合、ルートは非常に混乱します(多分目的と呼ぶかもしれません)。また、私は次のようなものがうまくいくと信じて:

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(); 
    } 
} 
関連する問題