在特定方案中从URL删除Controller

时间:2013-09-05 04:17:27

标签: asp.net asp.net-mvc routing asp.net-mvc-routing

当用户点击Controller中的Homeurl页面时,我想要从About移除Contact ASP.NET MVC sample application routes.MapRoute("Home", "{action}/{id}", new { controller = "Home" }); 。我尝试了这个,但它给了我404错误。

Route.Config

当我删除这一切时,一切都很完美 注意我想仅在Controller为Home时删除Controller名称。其他控制器应保持不变。 此外,我将代码保存在 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 } ); 文件上方

{{1}}

必填结果

  

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

2 个答案:

答案 0 :(得分:1)

您应该在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} );

答案 1 :(得分:-2)

 routes.MapRoute(
 name: "Default",
 url: "{controller}/{action}/{id}",
 defaults: new { controller = "DefaultControllerName", action = "Index", id = UrlParameter.Optional }
    );

如果你将指定控制器名称,那么这将适用于该控制器名称。如果不是默认情况下,它将控制器名称作为 DefaultControllerName