Asp.net-Mvc

訪問 ASP.NET MVC 應用程序中的控制器/操作列表

  • April 27, 2009

我們知道,在幕後,ASP.NET MVC 框架將使用反射來確定哪些控制器/動作可以執行,基於哪些類派生自System.Web.Mvc.Controller這些類,以及這些類中哪些方法返回一個ActionResult對象。

對於我的問題 - 是否可以從我的 MVC 應用程序中訪問此控制器/操作列表?

(我可以自己做,通過對目前程序集使用反射,但如果列表已經由 ASP.NET MVC 建構,我寧願重用這項工作,也不願自己重新發明輪子。)

new ReflectedControllerDescriptor(typeof(TController)).GetCanonicalActions()將返回 ActionDescriptor 對象的集合,顯示控制器上的所有操作。理解諸如選擇屬性或命名屬性之類的東西還不夠聰明,因此不能保證它返回的每個操作都是可網路呼叫的。但如果您需要直接執行操作,您可以對您感興趣的任何操作呼叫 ActionDescriptor.Execute()。

這是在程序集中的一個名為的internal類中完成的。System.Web.Mvc``System.Web.Mvc.ControllerTypeCache

順便說一句,操作方法不需要返回ActionResult。例如,他們可以void愉快地返回。

引用自:https://stackoverflow.com/questions/790464