Dans ASP.NET MVC, existe-t-il un moyen d'énumérer les contrôleurs via le code et d'obtenir leur nom?
exemple:
AccountController
HomeController
PersonController
me donnerait une liste telle que:
Account, Home, Person
Dans ASP.NET MVC, existe-t-il un moyen d'énumérer les contrôleurs via le code et d'obtenir leur nom?
exemple:
AccountController
HomeController
PersonController
me donnerait une liste telle que:
Account, Home, Person
En utilisant la suggestion de Jon de réfléchir à travers l'assemblage , voici un extrait que vous pouvez trouver utile:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Web.Mvc;
public class MvcHelper
{
private static List<Type> GetSubClasses<T>()
{
return Assembly.GetCallingAssembly().GetTypes().Where(
type => type.IsSubclassOf(typeof(T))).ToList();
}
public List<string> GetControllerNames()
{
List<string> controllerNames = new List<string>();
GetSubClasses<Controller>().ForEach(
type => controllerNames.Add(type.Name));
return controllerNames;
}
}
Vous pouvez réfléchir à travers votre assembly et trouver toutes les classes qui héritent du type System.Web.MVC.Controller. Voici un exemple de code qui montre comment vous pouvez le faire:
http://mvcsitemap.codeplex.com/WorkItem/View.aspx?WorkItemId=1567
Essaye ça
public static List<string> GetControllerNames()
{
List<string> controllerNames = new List<string>();
GetSubClasses<Controller>().ForEach(
type => controllerNames.Add(type.Name));
return controllerNames;
}
private static List<Type> GetSubClasses<T>()
{
return Assembly.GetCallingAssembly().GetTypes().Where(
type => type.IsSubclassOf(typeof(T))).ToList();
}
Tous ceux qui utilisent ce message lisent mieux ce message avant: l' utilisation de Assembly.GetCallingAssembly () ne renvoie pas l'assembly appelant
Le problème est que les vues de rasoir agissent comme des assemblages dynamiques indépendants et que vous n'obtenez pas l'assemblage souhaité.
Yair
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.