Asp.net 在特定场景中从url删除控制器

Asp.net 在特定场景中从url删除控制器,asp.net,asp.net-mvc,routing,asp.net-mvc-routing,Asp.net,Asp.net Mvc,Routing,Asp.net Mvc Routing,当用户单击ASP.NET MVC示例应用程序中的About和Contact页面时,我想从url中删除名为Home的Controller。我试过这个,但它给我一个404错误 routes.MapRoute("Home", "{action}/{id}", new { controller = "Home" }); 当我删除此选项时,所有选项都能正常工作。 注意我只想在控制器在家时删除控制器名称。其他控制器应保持不变。 此外,我将代码保存在上面的Route.Config文件中 route

当用户单击
ASP.NET MVC示例应用程序中的
About
Contact
页面时,我想从
url
中删除名为
Home
Controller
。我试过这个,但它给我一个404错误

routes.MapRoute("Home", "{action}/{id}",
    new { controller = "Home" });
当我删除此选项时,所有选项都能正常工作。
注意我只想在控制器在家时删除控制器名称。其他控制器应保持不变。 此外,我将代码保存在上面的
Route.Config
文件中

 routes.MapRoute("Home", "{action}/{id}",
     new { controller = "Home" });

 routes.MapRoute(
     name: "Default",
     url: "{controller}/{action}/{id}",
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
要求的结果

abc.com/Home/About应显示为abc.com/About
abc.com/Home/Contact应显示为abc.com/Contact


如果您将指定控制器名称,那么这将与该控制器名称一起使用。Bu如果不是默认值,它将采用控制器名称作为DefaultControllerName

您应该在global.asax中映射新路由(将其添加到默认路由之前),例如:

routes.MapRoute("SpecificRouteforHomeController", "{action}/{id}", new {controller = "Home", action = "Index", id = UrlParameter.Optional});

// default route  any defalt you want
routes.MapRoute("Default", "{controller}/{action}/{id}", new {controller = "Account", action = "Login", id = UrlParameter.Optional} );

这是针对主/索引的。我希望它用于Home/About和Home/ContactRex,因为它不与除Home和Account之外的任何其他控制器一起工作。我想要的是,当控制器名称为网站时,删除控制器,并通过所有剩余的控制器和操作。您在塞内卡学习过吗?不。从未有过@ayilmaz
routes.MapRoute("SpecificRouteforHomeController", "{action}/{id}", new {controller = "Home", action = "Index", id = UrlParameter.Optional});

// default route  any defalt you want
routes.MapRoute("Default", "{controller}/{action}/{id}", new {controller = "Account", action = "Login", id = UrlParameter.Optional} );