Pregunta

Sabemos que detrás de escena, el marco ASP.NET MVC utilizará la reflexión para determinar qué controladores/acciones están disponibles para ejecutarse, en función de qué clases se derivan de System.Web.Mvc.Controller y, de esas clases, que los métodos devuelven un ActionResult objeto.

A mi pregunta: ¿es posible acceder a esta lista de controladores/acciones desde mi aplicación MVC?

(Podría hacerlo yo mismo, usando la reflexión en el ensamblaje actual, pero si la lista ya ha sido construida por ASP.NET MVC, prefiero reutilizar ese esfuerzo que reinventar la rueda yo mismo).

¿Fue útil?

Solución

new ReflectedControllerDescriptor(typeof(TController)).GetCanonicalActions() Devolverá una colección de objetos de ActionDescriptor que muestran todas las acciones en el controlador. No es lo suficientemente inteligente como para comprender cosas como los atributos de selección o los atributos de nombres, por lo que no todas las acciones que devuelven se garantiza que se puede calentar en la web. Pero si necesita ejecutar las acciones directamente, puede llamar a ActionDescriptor.execute () sobre cualquier acción de interés para usted.

Otros consejos

This is done in an internal class in the System.Web.Mvc assembly called System.Web.Mvc.ControllerTypeCache.

By the way, action methods are not required to return ActionResult. They can return void happily, for instance.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top