是否可以使用自定义路由处理代码?
例如客户端请求服务器http://server.com/api/v1/json/profile/
和我的代码调用ApiController
,MyAction
带有参数的操作version=1
,,。format=json
action=profile
问问题
101 次
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 回答