internal static ActionResult File(this Controller controller, Stream stream)
        {
            //use reflection to call protected method :(
            var obj = controller.GetType().InvokeMember("File"
                                                        , (Reflection.BindingFlags.InvokeMethod | Reflection.BindingFlags.NonPublic | Reflection.BindingFlags.Instance)
                                                        , Type.DefaultBinder
                                                        , controller
                                                        , new object[] { stream, @"application/pdf" });

            return((ActionResult)obj);
        }
Exemple #2
0
        public static T InvokeOnActionExecuting <T>(this System.Web.Mvc.Controller controller, Expression <Func <T> > exp) where T : ActionResult
        {
            var method = ((MethodCallExpression)exp.Body).Method;
            ControllerDescriptor controllerDescriptor = new ReflectedControllerDescriptor(controller.GetType());
            ActionDescriptor     actionDescriptor     = new ReflectedActionDescriptor(method, method.Name, controllerDescriptor);
            var        actionContext     = new ActionExecutingContext(controller.ControllerContext, actionDescriptor, new Dictionary <string, object>());
            MethodInfo onActionExecuting = controller.GetType().GetMethod("OnActionExecuting", BindingFlags.Instance | BindingFlags.NonPublic);

            onActionExecuting.Invoke(controller, new object[] { actionContext });

            return((T)actionContext.Result);
        }