Created
May 9, 2013 15:01
-
-
Save trailmax/5548014 to your computer and use it in GitHub Desktop.
List of actions in a controller. Ignoring actions that come from base controller.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public virtual ActionResult SiteMap() | |
{ | |
var assembly = Assembly.GetExecutingAssembly(); | |
var controllers = assembly.GetTypes().Where(x => x != typeof(BaseController) && typeof(BaseController).IsAssignableFrom(x)).ToList(); | |
controllers = controllers.Where(c => !c.Name.StartsWith("T4MVC")).ToList(); | |
var controller = controllers.FirstOrDefault(c => c.FullName.Contains("HomePage")); | |
var actions = GetActionResults(controller); | |
var baseClassActions = GetActionResults(controller.BaseType); | |
actions = actions.Where(a => !baseClassActions.Select(b => b.Name).Contains(a.Name)).Select(a => a).ToList(); | |
foreach (var action in actions) | |
{ | |
Console.WriteLine(String.Format("Method Name: {0}", action.Name)); | |
} | |
throw new NotImplementedException(); | |
} | |
private List<MethodInfo> GetActionResults(Type controller) | |
{ | |
return controller.GetMethods(BindingFlags.Public | BindingFlags.DeclaredOnly | BindingFlags.Instance) | |
.Where(m => m.ReturnType == typeof(ActionResult) || m.ReturnType.IsAssignableFrom(typeof(ActionResult))) | |
.ToList(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment