定制路线管理

时间:2012-04-09 13:06:26

标签: asp.net-mvc asp.net-mvc-3

是否可以使用自定义路线处理代码?
例如,客户端请求http://server.com/api/v1/json/profile/上的服务器和我的代码调用ApiControllerMyAction操作参数version=1format=jsonaction=profile

2 个答案:

答案 0 :(得分:1)

这样的东西?您必须使用不同的参数名称进行操作,这样就不会与控制器操作发生冲突。

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

编辑让版本按照您想要的方式运行。

答案 1 :(得分: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();
  }
}