UriUtil.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using System;
  2. using System.Collections.Specialized;
  3. using System.Web;
  4. namespace CommonTool
  5. {
  6. /// <summary>
  7. /// URl帮助类
  8. /// </summary>
  9. public class UriUtil
  10. {
  11. /// <summary>
  12. /// 在URL后面追加参数
  13. /// </summary>
  14. /// <param name="url"></param>
  15. /// <param name="key"></param>
  16. /// <param name="value"></param>
  17. /// <returns></returns>
  18. public static string GetAppendedQueryString(string url, string key, string value)
  19. {
  20. return url.Contains("?") ? $"{url}&{key}={value}" : $"{url}?{key}={value}";
  21. }
  22. public static string RemoveParameter(string url, string key)
  23. {
  24. url = url.ToLower();
  25. key = key.ToLower();
  26. if (!url.Contains(key + "=")) return url;
  27. Uri uri = new Uri(url);
  28. NameValueCollection collection = HttpUtility.ParseQueryString(uri.Query);
  29. if (collection.Count == 0) return url;
  30. var val = collection[key];
  31. string fragmentToRemove = $"{key}={val}";
  32. string result = url.ToLower().Replace("&" + fragmentToRemove, string.Empty).Replace("?" + fragmentToRemove, string.Empty);
  33. return result;
  34. }
  35. /// <summary>
  36. /// 根据URL的相对地址获取决定路径
  37. /// <para>eg: /Home/About ==>http://192.168.0.1/Home/About</para>
  38. /// </summary>
  39. /// <returns>System.String.</returns>
  40. public static string GetAbsolutePathForRelativePath(string relativePath)
  41. {
  42. HttpRequest request = HttpContext.Current.Request;
  43. string returnUrl =
  44. $"{request.Url.AbsoluteUri.Replace(request.Url.PathAndQuery, string.Empty)}{VirtualPathUtility.ToAbsolute(relativePath)}";
  45. return returnUrl;
  46. }
  47. }
  48. }