Ich habe ein Projekt mit 2 Bereichen /Admin und /User.
Die Standardroute des Administrators lautet /Admin/Home/Index und die Standardroute des Benutzers lautet /Benutzer/Home/Index .
Ist es möglich, Routing zu implementieren, um ihre Home-URL so aussehen zu lassen /Profil/Index sondern um Inhalte aus /Admin/Home/Index für Administratoren und /Benutzer/Home/Index für die Nutzer?
update
Endlich herausfinden, wie man es macht
context.MapRoute(
"Admin",
"Profile/{action}",
new { area = AreaName, controller = "Home", action = "Index" },
new { RoleConstraint = new Core.RoleConstraint() },
new[] { "MvcApplication1.Areas.Admin.Controllers" }
);
...
context.MapRoute(
"User",
"Profile/{action}",
new { area = AreaName, controller = "Home", action = "Index" },
new { RoleConstraint = new Core.RoleConstraint() },
new[] { "MvcApplication1.Areas.User.Controllers" }
);
public class RoleConstraint : IRouteConstraint
{
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
string roleName = db.GetRoleByUserName(httpContext.User.Identity.Name);
string areaName = route.Defaults["area"].ToString();
return areaName == roleName;
}
}
Es funktioniert, aber für mich ist es nicht der MVC-Weg. Weiß jemand, wie man es richtig zu tun?