1

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

4

2 回答 2

1

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

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

EDIT使版本按您想要的方式工作。

于 2012-04-09T13:09:15.230 回答
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();
  }
}
于 2012-04-09T13:14:32.027 回答