using System.Collections.Generic; using System.Linq; using System.Web; namespace Hncore.Infrastructure.Common { public class UrlHelper { #region 设置url参数 /// /// 设置url参数 /// /// /// /// /// public static string SetUrlParam(string url, string paramName, string paramValue) { paramName = paramName.ToLower(); string currentUrl = url; if (!string.IsNullOrEmpty(paramValue)) { paramValue = HttpUtility.UrlEncode(paramValue); } if (!currentUrl.Contains("?")) { return currentUrl += "?" + paramName + "=" + paramValue; } List paramItems = currentUrl.Split('?')[1].Split('&').ToList(); string paramItem = paramItems.SingleOrDefault(t => t.ToLower().Split('=')[0] == paramName); if (!string.IsNullOrEmpty(paramItem)) { return currentUrl.Replace(paramItem, paramName + "=" + paramValue); } else { if (currentUrl.Contains("?")) { currentUrl += "&"; } else { currentUrl += "?"; } return currentUrl + paramName + "=" + paramValue; } } public static string SetUrlParam(string url, object paramObj) { var type = paramObj.GetType(); var properties = type.GetProperties(); foreach (var property in properties) { string name = property.Name; object valueObj = property.GetValue(paramObj, null); if (valueObj == null) { continue; } string value = valueObj.ToString(); url = SetUrlParam(url, name, value); } return url; } public static string ToUrlParam(IDictionary kvs) { return string.Join("&", kvs.Select(m => $"{m.Key}={m.Value}")); } #endregion } }