.NET Core中多条件查询拼接QueryString并选中当前条件

前端调用

      <a class="btn btn-primary @HttpRequestExtensions.GetActive(ViewContext.HttpContext.Request.QueryString.Value,"sort","")" target="_self" href="/AllResourses/List?@(Html.Raw(HttpRequestExtensions.UpdateQueryString(ViewContext.HttpContext.Request.QueryString.Value, "sort","")))">
                            最新上传
                        </a>
                        <a class="btn btn-primary @HttpRequestExtensions.GetActive(ViewContext.HttpContext.Request.QueryString.Value,"sort","1")" target="_self" href="/AllResourses/List?@(Html.Raw(HttpRequestExtensions.UpdateQueryString(ViewContext.HttpContext.Request.QueryString.Value, "sort","1")))">
                            最多下载
                        </a>
                        <a class="btn btn-primary @HttpRequestExtensions.GetActive(ViewContext.HttpContext.Request.QueryString.Value,"sort","2")" target="_self" href="/AllResourses/List?@(Html.Raw(HttpRequestExtensions.UpdateQueryString(ViewContext.HttpContext.Request.QueryString.Value, "sort","2")))">
                            评分最高
                        </a>

后台

    public static class HttpRequestExtensions
    {
        public static string RemoveQueryString(string queryString, string name)
        {
            var dic = GetFormData(queryString);
            dic.Remove(name);
            return ToQueryString(dic);
        }
        public static string UpdateQueryString(string queryString,
            string name, string value)
        {
            var dic = GetFormData(queryString);
            if (dic.ContainsKey(name))
            {
                dic[name] = value;
            }
            else
            {
                dic.Add(name, value);
            }
            return ToQueryString(dic);
        }
        public static string UpdateQueryStringceshi(string queryString,
            string []name, string []value)
        {
            var dic = GetFormData(queryString);
            for (int i = 0; i < name.Length; i++)
            {
                if (dic.ContainsKey(name[i]))
                {
                    dic[name[i]] = value[i];
                }
                else
                {
                    dic.Add(name[i], value[i]);
                }
            }
            
            return ToQueryString(dic);
        }
        /// <summary>
        /// 将获取的formData存入字典数组
        /// </summary>
        public static Dictionary<String, String> GetFormData(string formData)
        {
            try
            {
                if (formData.IndexOf("?", StringComparison.Ordinal)!=-1)
                {
                    formData = StringHelper.GetRight(formData, "?");
                }
                //将参数存入字符数组
                String[] dataArry = formData.Split('&');

                //定义字典,将参数按照键值对存入字典中
                Dictionary<String, String> dataDic = new Dictionary<string, string>();
                //遍历字符数组

                for (int i = 0; i <= dataArry.Length - 1; i++)
                {
                    //当前参数值
                    String dataParm = dataArry[i];
                    //"="的索引值

                    int dIndex = dataParm.IndexOf("=");
                    if (dIndex > 0)
                    {
                        //参数名作为key
                        String key = dataParm.Substring(0, dIndex);
                        //参数值作为Value
                        String value = dataParm.Substring(dIndex + 1, dataParm.Length - dIndex - 1);
                        //将编码后的Value解码
                        String deValue = System.Web.HttpUtility.UrlDecode(value, System.Text.Encoding.GetEncoding("utf-8"));

                        //将参数以键值对存入字典
                        dataDic.Add(key, deValue);
                    }
                }
                return dataDic;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        public static string ToQueryString(Dictionary<String, String> dic)
        {
            StringBuilder sb = new StringBuilder();
            foreach (var key in dic)
            {
                //EscapeDataString就是对特殊字符进行uri编码
                sb.Append(key.Key).Append("=")
                    .Append(Uri.EscapeDataString(key.Value)).Append("&");
            }
            return sb.ToString().Trim('&');//去掉最后一个多余的&
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="queryString">Url</param>
        /// <param name="name">参数</param>
        /// <param name="value">参数值</param>
        /// <param name="Default">默认值</param>
        /// <param name="returnValue">返回字符串</param>
        /// <returns></returns>
        public static string GetActive(string queryString, string name,string value,string Default = "",string returnValue= "active")
        {
            var dic = GetFormData(queryString);
            //包含name
            if (dic.ContainsKey(name))
            {
                if (value == dic[name])
                {
                    return returnValue;
                }
                return "";
            }
            //没有name,如果等于默认值
            if (value== Default)
            {
                return returnValue;
            }
            return "";

        }
        public static string GetActive(string viebag, string value)
        {
    
            if (viebag== value)
            {
                
                return "active";
            }
            return "";

        }
    }
原文地址:https://www.cnblogs.com/wangyinlon/p/11679154.html