Removing Controller from url in a specific scenario

送分小仙女□ 提交于 2019-12-02 21:10:33

问题


I want to remove Controller named Home from url when user clicks on About and Contact pages in ASP.NET MVC sample application. I tried this but it is giving me a 404 error.

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

When i remove this all works perfectly.
Note I want to remove Controller name only when Controller is Home. Other Controller should remain same. Further I kept the code in Route.Config file above

 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 }
        );

Required Result

abc.com/Home/About should shown as abc.com/About
abc.com/Home/Contact should shown as abc.com/Contact


回答1:


You should map new route in the global.asax (add it before the default one), for example:

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} );



回答2:


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

If u will specify the controller name then this will work with that controller name. Bu if not the by default it will take controller name as DefaultControllerName.



来源:https://stackoverflow.com/questions/18627655/removing-controller-from-url-in-a-specific-scenario

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!