【发布时间】:2013-10-25 15:49:25
【问题描述】:
我或多或少有 webapi 的标准路由(除了我添加了 {action}):
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}/{action}",
defaults: new { id = RouteParameter.Optional, action = RouteParameter.Optional }
);
当我有一个控制器时问题就开始了,它应该接受任何(零个或多个,具有随机名称)查询参数。假设它适用于 GET HTTP to URL,例如:
/api/Data/2836581?id=3&name=lol&etc=23&filter=all_but_nice
在 Get(int id) 控制器方法中,我收到 id==3,而我期望 id==2836581。
我可以绕过这个使用:
Request.GetRouteData().Values["id"]; // 2836581
Request.GetQueryNameValuePairs(); // All query parameters
但这种解决方案感觉更像是一种 HACK,而不是“快乐之路”。
我可以让 WebApi 将路由变量优先于 url-query 参数吗?
【问题讨论】:
标签: c# asp.net-web-api routing