是否有一种方法可以通过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管道做同样的方法?我不想实例化控制器,我只想要它的属性
在开始之前,请记住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")