.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 "";

        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM