c#MVC 5路由图重定向

c#MVC 5路由图重定向,c#,asp.net-mvc,maproute,C#,Asp.net Mvc,Maproute,最近,我不得不更新我的mvc Web应用程序,以便在UI中以不同的文字显示系统的基本实体 比方说 以前我有:“船只” 现在我被要求做到:“船” 按约定映射的URL:mysite/{controller}/{action}/{id} 所以我有如下网址: mysite/Vessels/Record/1023 mysite/Vessels/CreateVessel 我在用户界面中做了所有的重命名,这样标题和标签就可以在不同的船上更改,现在我也被要求处理URL 现在,我不想重命名控制器名称或Ac

最近,我不得不更新我的mvc Web应用程序,以便在UI中以不同的文字显示系统的基本实体

比方说

以前我有:“船只”

现在我被要求做到:“船”

按约定映射的URL:
mysite/{controller}/{action}/{id}

所以我有如下网址:

mysite/Vessels/Record/1023 

mysite/Vessels/CreateVessel 
我在用户界面中做了所有的重命名,这样标题和标签就可以在不同的船上更改,现在我也被要求处理URL

现在,我不想重命名
控制器
名称或
ActionResult
方法名称,因为这是一项繁重的重构,而且很可能很快需要再次更改文本…;-)


是否有任何快速的解决方案,只需编辑
RouteConfig
,或类似的东西,就可以用几行代码完成工作?

是的,只需注册将映射您的
VesselsController
操作的路线:

public class MvcApplication : System.Web.HttpApplication
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Vessels",                                              // Route name
                "Ship/{action}Ship/{id}",                               // URL with parameters
                new { controller = "Vessel", id = "" }                  // Parameter defaults
            );

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

        }

        protected void Application_Start()
        {
            RegisterRoutes(RouteTable.Routes);
        }
    }

还要确保在默认路由之前注册路由。因为,在另一种情况下,默认路由将首先执行,您将得到一个异常,因为您的应用程序中未定义任何
ShipController

谢谢您,Dmytro,但是,关于操作名称,我可以用类似的方式或正则表达式重定向它,在这里我可以将“船只”替换为“船只”@cnom,不需要正则表达式,请参阅我的更新。但是,在这种情况下,您必须将控制器操作从CreateVesser重命名为Create。此外,imho,您不需要成为动作名称的一部分。很明显,您正在创建vessel,因为Create是VesselController的一部分。正确的是,我最好将动作名称与动词“Create”、“Delete”等一起使用,但是,问题是我没有,即使我这样做了,我也必须重命名相应的视图名称。。这就是我想要避免的一切。。