如何从动作匹配过程中取出路径参数?

时间:2012-09-13 15:24:49

标签: asp.net-web-api

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

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

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

有没有人知道如何实现这一目标?

1 个答案:

答案 0 :(得分:3)

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

  2. 如果要在控制器操作中获取appId的值,可以从ControllerContext.RouteData.Values字典中获取路径值。 (不确定这是不是你的情况。你是否特别需要将它存储在HttpContext.Current.Items中?)

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