public static string MenuAction(this IUrlHelper url, UI.Menus.IMenuItem menu, IEnumerable <string> userRoles, object routeValues = null) { if (menu.Controller == null) { return(url.MenuAction(menu.Items.FirstOrDefault(x => userRoles == null || userRoles.Intersect(x.Roles).Count() == x.Roles.Count()), routeValues)); } return(url.MenuAction(menu, routeValues)); }
public static string MenuAction(this IUrlHelper url, UI.Menus.IMenuItem menu, object routeValues = null) { if (menu == null) { return("/error"); } dynamic menuRouteValues = new ExpandoObject(); if (menu.Area != null) { menuRouteValues.Area = menu.Area; } object values = Utils.Dynamics.Merge(menu.RouteValues, Utils.Dynamics.Merge(routeValues, menuRouteValues)); return(url.Action(menu.Action, menu.Controller, values)); }