public string ResolveParameter(MvcAction action) { var compiledParams = action.GetCompiledParameters(); var actionQueryParams = compiledParams.Where(p => p.BindingType == ActionParameterSourceType.Query).ToList(); string urlParamQueryPart = actionQueryParams.Count > 0 || _constantQueryParams.Count > 0 ? $"${{{QueryParameterHelperFunctions.GetQueryStringFuncName}({InitUrlParamsScriptExtensions.UrlParamsVarName})}}" : "";; // Add the route params string route = action.GetRouteTemplate(_baseUrl); var routeParamNames = compiledParams.Where(p => p.BindingType == ActionParameterSourceType.Route).Select(p => p.Name); foreach (string paramName in routeParamNames) { route = route.Replace($"{{{paramName}}}", $"${{{paramName}}}"); } return($"`{route}{urlParamQueryPart}`"); }
/// <summary> /// Builds the action signature /// </summary> /// <param name="action">The action to build the signature for</param> /// <returns>The string signature</returns> private string BuildActionSignature() { List <string> actionParams = new List <string>(); var nonIgnoredParams = _action.GetCompiledParameters().Where(p => p.BindingType != ActionParameterSourceType.Ignored); var methodRequiredParameters = nonIgnoredParams.Where(p => !p.IsOptional).Select(FormatMethodParameter); var userRequiredParameters = _fetchFunc.AdditionalParameters.Where(p => !p.Optional).Select(FormatUserParameter); var methodOptionalParameters = nonIgnoredParams.Where(p => p.IsOptional).Select(FormatMethodParameter); var userOptionalParameters = _fetchFunc.AdditionalParameters.Where(p => p.Optional).Select(FormatUserParameter); actionParams.AddRange( methodRequiredParameters .Union(userRequiredParameters) .Union(methodOptionalParameters) .Union(userOptionalParameters) ); return($"{_action.ScriptName}({string.Join(", ", actionParams)}): { ReplaceTokens(_fetchFunc.ReturnType) }"); }