问题
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