2012-08-22 45 views
0

我有一個ApiController,很簡單,就像這樣:如何在ASP.NET Web API中指定控制器的名稱?

public class AssetController : ApiController 
{ 
// removed for brevity 
} 

當我從視圖中插入一個途徑是,建立的網址是一樣的東西:

http://host/Asset 

,但我想自定義名字,這樣就變成這樣:

http://host/assets 

如何爲我的控制器指定自定義名稱,而不訴諸一個完整的自定義路由TA竹葉提取?

+0

爲了使它小寫...你檢查了這個答案http://stackoverflow.com/questions/878578/how-can-i-have-lowercase-routes-in-asp-net-mvc和http: //stackoverflow.com/questions/6168270/making-url-lowercase-any-easy-or-builtin-way? 他們傾向於在這裏指向CodePlex項目http://lowercaseroutesmvc.codeplex.com/檢出部分:(第4步(如果使用ASP.NET Web API) - 重新映射您的HTTP) –

+0

謝謝,我一直在看着這個,我一直在瀏覽源代碼,但我找不到任何幫助我的東西。我認爲今天唯一的出路是定製航線表。 –

+0

我已更新問題主體以使其更清楚。 –

回答

0

我必須解決這個問題,所以我選擇調整我的路由表來反映我真正想要的API。

1

當我從視圖中插入一個途徑是,建立的網址是一樣的東西:http://host/Asset

你還沒有真正顯示你是如何做插入但以下應該工作精細:

@Url.RouteUrl("DefaultApi", new { httproute = "false", controller = "assets" }) 

,如果你想絕對URL,你可以指定該協議方案的第三個參數:

@Url.RouteUrl("DefaultApi", new { httproute = "false", controller = "assets" }, "http") 

而爲了服從RESTFul約定,您應該將您的控制器重命名爲AssetsController

+0

有人很有幫助,謝謝。它確實讓我重命名我的控制器來影響名稱。我試圖獲得複數名稱的RESTFul約定,但我不明白這應該是控制器的問題。 –

+0

這是控制器在約定方面的擔憂。這就是ASP.NET MVC路由的工作原理。所以遵循這些慣例。 –

1

我建議看看https://github.com/mccalltd/AttributeRouting庫。它通過在每個函數上放置一個屬性並給它一個特定的路徑(可以是任何東西)來很好地處理這個方面。

+0

到目前爲止其實喜歡它,謝謝! –

相關問題