/// <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); }
///<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; }