/// <summary>
        /// Finds the action for the controller, if not it is inferred.
        /// </summary>
        /// <param name="controllerContext"></param>
        /// <param name="controllerDescriptor"></param>
        /// <param name="actionName"></param>
        /// <returns></returns>
        protected override ActionDescriptor FindAction(ControllerContext controllerContext,
                                                       ControllerDescriptor controllerDescriptor, string actionName)
        {
            var foundAction = base.FindAction(controllerContext, controllerDescriptor, actionName);

            if (foundAction == null)
            {
                InferredAction inferredAction = GetInferredAction(controllerDescriptor, actionName);
                foundAction = new InferredActionDescriptor(actionName, controllerDescriptor, inferredAction);
            }
            return(foundAction);
        }
示例#2
0
        ///<summary>
        /// Associates a model provider with the specified inferred action name.
        ///</summary>
        ///<param name="actionName"></param>
        ///<param name="modelProvider"></param>
        ///<typeparam name="TModel"></typeparam>
        ///<returns></returns>
        public virtual InferredActionRegistry <TController> WithProvider <TModel>(string actionName, Func <TModel> modelProvider)
        {
            Func <object> wrapper = () => modelProvider();

            var actionRegistration = new InferredAction {
                ActionName    = actionName,
                Controller    = typeof(TController),
                ModelProvider = wrapper
            };

            ActionList.Add(actionRegistration);
            return(this);
        }
 /// <summary>
 /// See <see cref="ActionDescriptor"/>
 /// </summary>
 /// <param name="actionName"></param>
 /// <param name="controllerDescriptor"></param>
 public InferredActionDescriptor(string actionName, ControllerDescriptor controllerDescriptor, InferredAction inferredAction)
 {
     InferredAction            = inferredAction;
     this.actionName           = actionName;
     this.controllerDescriptor = controllerDescriptor;
 }
 /// <summary>
 /// See <see cref="ActionDescriptor"/>
 /// </summary>
 /// <param name="actionName"></param>
 /// <param name="controllerDescriptor"></param>
 public InferredActionDescriptor(string actionName, ControllerDescriptor controllerDescriptor, InferredAction inferredAction)
 {
     InferredAction = inferredAction;
     this.actionName = actionName;
     this.controllerDescriptor = controllerDescriptor;
 }