2013-02-25 102 views
0

我想向默認的MvcHandler添加一些功能。發生什麼事情是:我想破解URL而不是Pascal Case URL。換句話說,如果我的控制器是SomeController,我希望URL是/ some-controller而不是/ SomeController。擴展ASP.NET MVC 4 MvcHandler

我最好的解決方法是:我創建了一個映射文件URLMappings.xml,它將每個控制器映射到每個所需的URL。然後,我擴展了默認的Route類,根據這個和默認的RouteHandler生成外發url,以瞭解基於此的url。那麼,這工作正常,因爲即使沒有創建一些映射,那麼框架將使用默認行爲。

我的觀點是:有了這個路由系統瞭解這兩種網址,這導致重複的內容SEO問題。我想然後執行以下操作:

  1. 獲取控制值
  2. 看看一些映射控制器名稱值
  3. 如果匹配相匹配,那麼還有比這是輸入的一個部分最好網址,應該返回404.

我在網上搜索過,唯一的辦法就是創建一個新的IHttpHandler。不過我不想從頭開始,因爲我需要所有的MVC功能。我只是想把這個邏輯放在ProcessRequest上,但是我的超級版本的方法沒有被執行。

有人可以給我一些關於如何處理這個問題的想法嗎?對不起,如果這個問題很愚蠢,或者它不是很詳細。如果需要更多信息,請告訴我。

回答

1

您不需要自定義MvcHandler,而是自定義Route。已經有一個名爲LowercaseRoutesMVC的NuGet軟件包。隨意下載它,探索source code並根據需要進行調整(把短劃線放在任何你想放的地方)。

+0

謝謝@Darin,我來看看。我認爲這解決了我的問題。 – user1620696 2013-02-25 16:06:18