2012-04-24 165 views
7

我有一個大約9個控制器的項目。現在在項目結束時URL更改。如何處理最好的這種情況 - 重命名控制器似乎只是太麻煩......我需要改變servercode和JavaScript各個環節重命名控制器asp.net mvc

+0

你也可以看看IIS URL重寫 – Chandermani 2012-04-24 14:28:45

+0

ReSharper6是一個沒有工作.. – 2012-04-24 15:48:23

+0

另外請注意:您可以在需要在URL中指定的操作使用破折號,在C#中方法的命名規則的蔑視(花我有一段時間要學習)。請參閱:http://stackoverflow.com/questions/30310/asp-net-mvc-how-do-i-enable-dashes-in-my-urls – Faust 2012-04-24 16:50:21

回答

6

你的問題可以通過改變現有路線來解決。在您的global.asax中,你會發現這樣的

routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 

,一個URL「/控制器/動作/ ID」映射到控制器,操作和ID的代碼片段。您可以提供這樣的路由

routes.MapRoute(
      "RefactoredRoute", // Route name 
      "SomeChangedURLBase/{action}/{id}", // URL with parameters 
      new { controller = "Controller", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 

將請求路由到/ SomeChangedURLBase ...由控制器處理。

請注意,這些路由應在默認路由之前註冊,以避免視圖中生成的鏈接指向默認路由並生成舊URL。

+0

我實現了這一點後意識到一點:在我的瀏覽器內,我仍然看到舊的網址,如果我經常瀏覽應用程序,但我的新網址被接受。任何改變這種方式 - 以便顯示新的網址? – 2012-04-26 14:49:22

+0

這可能是Route ordering/ActionLink構建中的問題。您可以使用RouteLink而不是ActionLink來生成鏈接。 – saintedlama 2012-04-26 14:57:00

+0

如果您在頁面上使用ActionLink,並將它們指向控制器和操作,則它將使用新URL,前提是將其放在路由集合中的舊URL之前。 – 2014-11-19 15:45:54