讓說我有在MVC 4的Web API控制器兩種方法:URL參數
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地圖請求行動的誤解?
[這裏](HTTP不工作://論壇。 asp.net/t/1774984.aspx/2/10)描述了相同的問題,但沒有結論是這種行爲預期爲 – 2012-03-30 13:22:03
PS。由於相同的問題,如果存在多個映射到HTTP動詞的方法,則URL中的OData語法將不起作用。 – 2012-03-30 13:26:36
你可以在你的控制器上顯示你的實際路線和所有方法和簽名嗎? – 2012-03-30 13:51:34