【发布时间】:2012-03-30 13:00:36
【问题描述】:
假设我在 MVC 4 Web API 控制器中有两种方法:
public IQueryable<A> Get() {}
和
public A Get(int id) {}
还有以下路线:
routes.MapHttpRoute(
name: "Default",
routeTemplate: "{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
这按预期工作。再添加一个参数,例如:
public IQueryable<A> Get(int p) {}
public A Get(int id, int p) {}
导致MVC对以下请求返回404的情况:
GET /controller?p=100
或者
GET /controller/1?p=100
带有消息“在控制器'控制器'上找不到与请求匹配的操作”
我希望 URL 参数应该由 MVC 连接而不会出现问题,但事实并非如此。这是一个错误还是我对 MVC 如何将请求映射到操作的误解?
【问题讨论】:
-
Here 描述了相同的问题,但没有结论是预期的这种行为
-
附言。由于同样的问题,如果有多个方法映射到 HTTP 动词,则 URL 中的 OData 语法将不起作用。
-
您能显示您的实际路线以及控制器中的所有方法和签名吗?
标签: c# asp.net-mvc asp.net-web-api