/// <inheritdoc /> protected override bool TryMatchUrl(string[] urlParams, RequestContext requestContext) { var selfRouting = this.Controller as IRouteMapper; if (urlParams != null && selfRouting != null && selfRouting.TryMapRouteParameters(urlParams, requestContext)) { RouteHelper.SetUrlParametersResolved(true); return(true); } var controllerName = requestContext.RouteData.Values[DynamicUrlParamActionInvoker.ControllerNameKey] as string; string actionName = null; if (requestContext.RouteData.Values.ContainsKey("action")) { actionName = requestContext.RouteData.Values["action"] as string; requestContext.RouteData.Values.Remove("action"); } try { requestContext.RouteData.Values.Remove(DynamicUrlParamActionInvoker.ControllerNameKey); MvcRequestContextBuilder.SetRouteParameters(urlParams, requestContext, this.Controller as Controller, controllerName); } finally { if (actionName != null) { requestContext.RouteData.Values["action"] = actionName; } } return(true); }
/// <inheritdoc /> protected override bool TryMatchUrl(string[] urlParams, RequestContext requestContext) { var controllerName = requestContext.RouteData.Values[DynamicUrlParamActionInvoker.ControllerNameKey] as string; requestContext.RouteData.Values.Remove(DynamicUrlParamActionInvoker.ControllerNameKey); MvcRequestContextBuilder.SetRouteParameters(urlParams, requestContext, this.Controller as Controller, controllerName); return(true); }