Schritt 1: die Route Constraint erstellen.
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());
}
}
Schritt 2:
eine neue Route Mapping über den Standardzuordnung hinzufügen, die die Route Einschränkung verwendet, die wir gerade erstellt hat. Der generische Parameter sollte die Controller-Klasse sein, die Sie als "Root" -Controller verwenden möchten.
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}
);
Jetzt sollten Sie in der Lage sein zu Hause Methoden Controller wie so zuzugreifen: example.com/about, example.com/contact
Dies wird nur Homecontroller beeinflusst. Alle anderen Controller haben die Standard-Routing-Funktionalität.
Das hat perfekt funktioniert! Danke ... die Reihenfolge ist hier wichtig ... Ich habe das aber schon früher gemacht ... es war unter der Standardroute, die es nicht funktionierte. Dein ehrfürchtiger, danke! – BRogers
Danke Sir .... –
Funktioniert wirklich gut! – Kbdavis07