我有一個視頻控制器和它裏面有2種方法如下所示:的Web API路由問題
[Route("api/Video/{id:int}")]
public Video GetVideoByID(int id){ do something}
[Route("api/Video/{id}")]
public Video GetVideoByTitle(string id) {do something}
的WebApiConfig.cs是這樣的:
public const string DEFAULT_ROUTE_NAME = "MyDefaultRoute";
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: DEFAULT_ROUTE_NAME,
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
所以,當我註釋掉任何一種方法,另一種方法起作用,就像你完全評論第一種方法,第二種方法可行,但兩者在實施時都不起作用。我使用了空的Web API模板。
因此,爲什麼會發生這種情況的任何想法都會很好。
你可以嘗試像 「ID_STR」,而不是 「ID」 在GetVideoByTitle,讓我知道? – 2014-10-02 07:37:53
我不認爲這隻適用於參數的不同名稱,即使更改參數的數量也無濟於事。是不可能改變路線來區分兩者。也許看看ActionAttributes將其標記爲不同。 – Schwarzie2478 2014-10-02 07:46:19
@ user3036757你是否真的想要在一個'頁面'上的多個提交按鈕每個都去一個不同的動作? – 2014-10-02 08:04:59