ASP.NET MVC编程方式获取控制器列表(ASP.NET MVC Programmaticall

2019-06-17 11:49发布

在ASP.NET MVC是有办法通过代码来枚举控制器,并得到他们的名字吗?

例:

AccountController
HomeController
PersonController

会给我一个清单,例如:

Account, Home, Person

Answer 1:

您可以通过装配反映,发现从类型System.Web.MVC.Controller继承的所有类。 下面是展示了如何做到这一点的一些示例代码:

http://mvcsitemap.codeplex.com/WorkItem/View.aspx?WorkItemId=1567



Answer 2:

使用通过组装反映乔恩的建议 ,这里是你可能会觉得有用的代码段:

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;
    }
}


Answer 3:

所有之前谁使用这个岗位更好地阅读这篇文章: 使用Assembly.GetCallingAssembly()不返回调用程序集

问题是,剃刀意见作为独立的动态组件和你没有获得所需的组件。

亚伊尔



Answer 4:

在创建每个控制器的属性,然后你会得到这样的名字。



文章来源: ASP.NET MVC Programmatically Get a List of Controllers