Ecco i passaggi per nome del controller di rimuovere dal HomeController
Fase 1: creare il vincolo percorso.
public class RootRouteConstraint<T> : IRouteConstraint
{
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
var rootMethodNames = typeof(T).GetMethods().Select(x => x.Name.ToLower());
return rootMethodNames.Contains(values["action"].ToString().ToLower());
}
}
Fase 2:
aggiungere un nuovo mapping percorso sopra la mappatura predefinita che utilizza il vincolo percorso che abbiamo appena creato. Il parametro generico dovrebbe essere la classe controller che si intende utilizzare come controller "Root".
routes.MapRoute(
"Root",
"{action}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new { isMethodInHomeController = new RootRouteConstraint<HomeController>() }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Ora si dovrebbe essere in grado di accedere ai metodi del controller a casa in questo modo: example.com/about, example.com/contact
Questo sarà influisce solo HomeController. Tutti gli altri controller avranno la funzionalità di routing predefinita.
Controllare il collegamento seguente aiuterà [Come rimuovere il nome del controller dall'URL utilizzando la rotta in MVC] (https://stackoverflow.com/questions/34650332/how-to-remove-the-controller-name-from- the-url-con-rotta-in-mvc/34653793 # 34653793). –
VEDERE AGGIORNAMENTO 2016 IN BASSO – niico