2012-09-15 42 views
3

我奮力如何正確允許破折號/ hypens在我的MVC 4/ASP.NET 4.5應用程序的URL ...出於某種原因MVC破折號轉換爲下劃線這不是我想要的。ASP.NET MVC 4 - 允許破折號/在hypens URL的

我做之前,我張貼的問題,仍無法找到任何簡單的解決方案摸索好位。我發現的一切似乎都是爲了這樣一個簡單的配置。

基本上,我想能夠訪問以下網址:

www.mysite.com/dashes-in-url

因此,例如,我創建了一個名爲控制器:

破折號功能於urlController.cs

控制器被評爲優良,並允許在控制器名破折號。

然而,當我創建用於索引的視圖用於上述控制器,它創建的視圖爲:

文件夾:/查看/ dashes_in_url

隨着該文件夾中的文件Index.cshtml - 但它用下劃線代替了我的破折號。

所以我要訪問的網址爲:

www.mysite.com/dashes_in_url

用下劃線,而不是用在URL中的破折號。

有誰知道任何優雅的,簡單的解決方案,以達到我想要做什麼?

在這個問題上的任何幫助將不勝感激,謝謝!

+0

愚蠢的問題......你有沒有嘗試重命名你的觀點,如「劃線功能於url.cshtml」? –

+1

你需要實現一個HyphenatedRouteHandler - 幸運的是,很多人已經完成了這個工作,所以在這裏簽出接受的答案http://stackoverflow.com/questions/2070890/asp-net-mvc-support-for-urls-with-hyphens或搜索谷歌HyphenatedRouteHandler更多的例子 – bUKaneer

回答

6

我爲這個問題開發了一個開源的NuGet庫,它隱式地將EveryMvc/Url轉換爲每個mvc/url。

虛線網址是更加搜索引擎友好,更易於閱讀。 (More on my blog post

NuGet包:https://www.nuget.org/packages/LowercaseDashedRoute/

要安裝它,只需右鍵打開在Visual Studio中的NuGet窗口單擊項目並選擇NuGet包管理器,在「網上」標籤式「小寫線虛線路線「,它應該彈出。

或者,也可以在Package Manager控制檯運行這段代碼

Install-Package LowercaseDashedRoute

之後,你應該打開App_Start/RouteConfig.cs並註釋掉現有route.MapRoute(...)呼叫並添加此代替:

routes.Add(new LowercaseDashedRoute("{controller}/{action}/{id}", 
    new RouteValueDictionary(
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }), 
    new DashedRouteHandler() 
) 
); 

就是這樣。所有的網址都是小寫字母,虛線,並且隱式轉換,而不需要做更多的事情。

開源項目地址:https://github.com/AtaS/lowercase-dashed-route

+1

完美的包好友。謝謝! –

+0

不客氣! –

+0

當我使用javascript引用諸如window.location.href =「/ MyController/Index/Id/ArbitraryText」之類的地址時,控制器不會破碎。我怎樣才能解決這個問題? –