如何从Action匹配过程中提取路由参数



我正在构建一个MVC 4.0 WEB API应用程序,并希望使用以下路线:

/api/{appId}/{controller}/{id1}/{action}/{id2}

我想使用appId参数并使用它在HttpContext.Current.Items集合中设置一个值,并希望它退出Action匹配过程。我当然不想在控制器中的每个操作方法中添加appId参数。

有人知道如何做到这一点吗?

  1. 您不需要包含appId作为参数;web API将路由到与路由参数的最佳子集匹配的动作。因此,如果没有任何操作具有appId参数,它将只在id1、id2和操作名称(来自{action})上匹配。

  2. 如果您想在控制器操作中获取appId的值,可以从ControllerContext.RouteData.values字典中获取路由值。(不确定你是否是这样的场景。你是否特别需要将其存储在HttpContext.Current.Items中?)

本文详细介绍了操作选择:http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-and-action-selection

最新更新