Satrabel.OpenUrlRewriter.Components.CacheController.GetCustomModuleRuleByParameters C# (CSharp) Метод

GetCustomModuleRuleByParameters() публичный Метод

public GetCustomModuleRuleByParameters ( string CultureCode, int TabId, string Parameters ) : Satrabel.HttpModules.Provider.UrlRule
CultureCode string
TabId int
Parameters string
Результат Satrabel.HttpModules.Provider.UrlRule
        public UrlRule GetCustomModuleRuleByParameters(string CultureCode, int TabId, string Parameters)
        {
            UrlRule rule = null;
            IEnumerable<UrlRule> rules;
            if (TabId == Null.NullInteger)
            {
                rules = _rules.Where(r => r.RuleType == UrlRuleType.Custom && r.Action == UrlRuleAction.Rewrite && r.IsMatch(Parameters) && r.RemoveTab == true);
            }
            else
            {
                rules = _rules.Where(r => r.RuleType == UrlRuleType.Custom && r.Action == UrlRuleAction.Rewrite && r.IsMatch(Parameters));
            }

            rules = rules.Where(r => !r.Url.Contains("[pagename]")); // pagename present, it not possible to know the right url

            if (TabId != Null.NullInteger)
            {
                //with tabid
                var tabRules = rules.Where(r => r.TabId == TabId);
                rule = GetFirstRule(tabRules, CultureCode);
            }
            else
            {
                rule = GetFirstRule(rules, CultureCode);
            }
            //without tabid
            if (rule == null)
            {
                var tabRules = rules.Where(r => r.TabId <= 0);
                rule = GetFirstRule(tabRules, CultureCode);
            }
            return rule;
        }

Usage Example

        private static void ProcessQuery(CacheController cacheCtrl, RewriterAction action, int PortalId)
        {
            if ((action.QueryUrl.Trim().Length > 0))
            {
                //split the value into an array based on "/" ( ie. /tabid/##/ )
                string parameters = action.QueryUrl.TrimStart('?', '&').Trim();
                var rule = cacheCtrl.GetModuleRuleByParameters(action.CultureCode, action.TabId, parameters);

                if (rule != null)
                {
                    if (rule.RemoveTab)
                    {
                        action.RedirectPage = "";
                    }
                    action.RedirectModule = rule.Url;
                    action.DoRedirect = true;
                    action.Raison += "+ModuleRule:" + rule.Parameters + ">" + rule.Url;
                    action.QueryUrl = "";
                    return;
                }

                rule = cacheCtrl.GetCustomModuleRuleByParameters(action.CultureCode, action.TabId, parameters);
                if (rule != null)
                {

                    if (rule.RemoveTab)
                    {
                        action.RedirectPage = "";
                    }
                    action.RedirectModule = rule.Replace(parameters, "");
                    action.DoRedirect = true;
                    action.Raison += "+ModuleRule:" + parameters + ">" + action.RedirectModule;
                    action.QueryUrl = "";
                    return;
                }
            }
        }