c# MVC 5 RouteConfig 重定向
c# MVC 5 RouteConfig redirection
最近我不得不更新我的 mvc web 应用程序,以便系统的基本实体显示在 UI 中具有不同的文字。
假设
之前我有:"Vessels"
现在要求我做:"Ships"
按照约定映射的网址:mysite/{controller}/{action}/{id}
所以我有这样的网址:
mysite/Vessels/Record/1023
mysite/Vessels/CreateVessel
我在用户界面中进行了所有重命名,以便标题和标签从 Vessel 更改为 Ship,现在我还被要求处理 url。
现在,我不想重命名 Controller
名称或 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
。
最近我不得不更新我的 mvc web 应用程序,以便系统的基本实体显示在 UI 中具有不同的文字。
假设
之前我有:"Vessels"
现在要求我做:"Ships"
按照约定映射的网址:mysite/{controller}/{action}/{id}
所以我有这样的网址:
mysite/Vessels/Record/1023
mysite/Vessels/CreateVessel
我在用户界面中进行了所有重命名,以便标题和标签从 Vessel 更改为 Ship,现在我还被要求处理 url。
现在,我不想重命名 Controller
名称或 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
。