Exemplo n.º 1
0
        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) }");
        }