【问题标题】:rename controllers asp.net mvc重命名控制器 asp.net mvc
【发布时间】:2012-04-24 14:18:57
【问题描述】:

我有一个更大的项目,大约有 9 个控制器。现在在项目结束时,url requeirement 发生了变化。如何最好地处理这种情况 - 重命名控制器似乎太麻烦了......我需要更改 servercode 和 javascript 中的所有链接

【问题讨论】:

  • 你也可以看看IIS Url Rewrite
  • ReSharper6 是可以工作的..
  • 另请注意:您可以在需要在 url 中指定的操作中使用破折号,无视 C# 方法命名规则(我花了一段时间才知道这一点)。见:stackoverflow.com/questions/30310/…

标签: asp.net asp.net-mvc


【解决方案1】:

您的问题可以通过更改现有路线来解决。在您的 global.asax 中,您会找到这样的代码片段

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

将 URL '/Controller/Action/Id' 映射到 Controller、Action 和 Id。你可以提供这样的路线

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

将请求路由到 /SomeChangedURLBase... 以由 Controller 处理。

请注意,这些路由应该在默认路由之前注册,以避免视图中生成的链接指向默认路由并生成旧 URL。

【讨论】:

  • 在实现这一点后我意识到:在我的浏览器中,如果我定期浏览应用程序,我仍然会看到旧的 url,但我的新 url 被接受。有什么方法可以改变这个 - 以便显示新的网址?
  • 这可能是路由排序/ActionLink 构建的问题。您可以使用 RouteLink 而不是 ActionLinks 来生成链接。
  • 如果您在页面上使用 ActionLinks,并将它们指向控制器和操作,如果新 URL 在路由集合中放置在旧 URL 之前,它将使用新 URL。
【解决方案2】:

【讨论】:

    猜你喜欢
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    相关资源
    最近更新 更多