C# 带区域的MVC路线

C# 带区域的MVC路线,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,在MVC5中,我有一个旧的控制器“MyOld”,需要它指向“MyNew”,但请求一直指向MyOld routes.MapRoute( name: "newthing", url: "Trade/MyOld", defaults: new { controller = "MyNew", action = "Index", area = "Trade" } ).DataTokens.Add("ar

在MVC5中,我有一个旧的控制器“MyOld”,需要它指向“MyNew”,但请求一直指向MyOld

        routes.MapRoute(
           name: "newthing",
           url: "Trade/MyOld",
           defaults: new { controller = "MyNew", action = "Index", area = "Trade" }
           ).DataTokens.Add("area","Trade");

您应该将路由器添加到方法
注册表区域

TradeAreaRegistration.cs

public class TradeAreaRegistration : AreaRegistration 
{
    public override string AreaName 
        {
            get 
            {
                return "Trade";
            }
        }

    public override void RegisterArea(AreaRegistrationContext context) 
    {    
        context.MapRoute(
         name: "MyOldToMyNew",
         url: "Trade/MyOld",
         defaults: new { controller = "MyNew", action = "Index", id = UrlParameter.Optional }
     );

        context.MapRoute(
            name: "Trade_default",
            url: "Trade/{controller}/{action}/{id}",
            defaults: new { action = "Index", id = UrlParameter.Optional }
        );
    }
}

您应该将路由器添加到方法
注册表区域

TradeAreaRegistration.cs

public class TradeAreaRegistration : AreaRegistration 
{
    public override string AreaName 
        {
            get 
            {
                return "Trade";
            }
        }

    public override void RegisterArea(AreaRegistrationContext context) 
    {    
        context.MapRoute(
         name: "MyOldToMyNew",
         url: "Trade/MyOld",
         defaults: new { controller = "MyNew", action = "Index", id = UrlParameter.Optional }
     );

        context.MapRoute(
            name: "Trade_default",
            url: "Trade/{controller}/{action}/{id}",
            defaults: new { action = "Index", id = UrlParameter.Optional }
        );
    }
}