【发布时间】:2016-02-14 01:57:38
【问题描述】:
如何定义一组路由(或修改我的控制器)以允许我处理这两种类型的 URI 请求?请注意,我可以修改我的类和路由,但不能更改 URI 的结构。
示例 1 URI 正确路由到WidgetsController
api/widgets/{widget id}
示例 2 URI 错误地路由到WidgetsController。我希望它路由到WidgetActionController。
api/widgets/{widget id}/widgetaction/{widget action id}
这是我的控制器
Public Class WidgetsController
Inherits ApiController
' GET api/widgets/{widget id}
Public Function [Get](id as integer) As Widget
Return DataAccess.GetWidgetByID(id)
End Function
End Class
Public Class WidgetActionController
Inherits ApiController
' GET api/widgets/{widget id}/widgetaction/{action}
Public Function [Get](id as integer, action as integer) As Boolean
'Get Widget By ID
'Perform {action} on Widget
End Function
End Class
这是我的路线:
config.Routes.MapHttpRoute("Data",
"api/{controller}/{id}/{year}/{month}/{day}",
New With {Key .id = RouteParameter.[Optional],
.year = RouteParameter.[Optional],
.month = RouteParameter.[Optional],
.day = RouteParameter.[Optional]})
config.Routes.MapHttpRoute("WidgetAction",
"api/widgets/{id}/widgetaction/{action}",
New With {Key .controller = "WidgetAction"})
【问题讨论】:
标签: asp.net-mvc asp.net-web-api2 url-routing asp.net-mvc-routing asp.net-web-api-routing