是否有一种方法可以通过ASP获得控制器类型?NET MVC3管道

本文关键字:控制器 类型 管道 MVC3 NET ASP 可以通过 方法 一种 是否 | 更新日期: 2023-09-27 18:16:37

我需要获得另一个控制器上的属性(即不是当前正在执行的)。

这样做的一种方法如下:

    Type controllerType = Type.GetType("App1.UI.Web.Controllers." + controllerName + "Controller", true);
    object[] controllerAttributes = controllerType.GetCustomAttributes(true);

是否有一个更好的,不那么脆弱的,使用MVC管道做同样的方法?我不想实例化控制器,我只想要它的属性

是否有一种方法可以通过ASP获得控制器类型?NET MVC3管道

在开始之前,请记住Controller并不一定要以后缀"Controller"结尾。MVC控制器的默认命名约定是在类后面加上"Controller"这个词。你的默认值是"HomeController"answers"AboutController"你可以很容易地创建一个名为"MyHome"或"Dashboard"的类,并让它从Controller继承,它将是一个没有"Controller"后缀的控制器。

我在过去创建了一个路由约束。下面是我使用的代码片段:

 List<Type> _type = Assembly
                            .GetCallingAssembly()
                            .GetTypes()
                            .Where(type => type.IsSubclassOf(typeof(Controller)))
                            .ToList()

代码的作用是在当前程序集中查找作为控制器的所有类。您还可以在where中添加一些代码,例如:

 .Where(type => type.IsSubclassOf(typeof(Controller)) && type.Name.ToLower() == "homecontroller")