前端調用
<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 ""; } }