2012-04-24 122 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