ASP.net常用代码(持续更新)

来源:互联网 发布:软件锁哪个好 编辑:程序博客网 时间:2024/05/17 23:12
主题 概要 Asp.net常用代码 项目中的优秀代码或看到的相关代码有时间就随时记录 编辑 时间 新建 20170730 添加扩展 20170915 序号 参考资料 1 2

每次写代码都要东拼西找,希望把些简单的代码块放在一起,用的时候方便查看,仅作备份,并持续更新。

HttpPost请求

指定一个url和请求参数,进行post请求:

 public static string httpPost(string url, string body)        {            Encoding encoding = Encoding.UTF8;            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);            request.Method = "POST";            request.Accept = "text/html, application/xhtml+xml, */*";            request.ContentType = "application/json";            byte[] buffer = encoding.GetBytes(body);            request.ContentLength = buffer.Length;            request.GetRequestStream().Write(buffer, 0, buffer.Length);            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())              using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))            {                return reader.ReadToEnd();            }        }

其中body的格式为:

{_PrincipalName:"1000003541@chinaexpressair.com",_Count:"10"}

把请求参数字典转换成body的函数:

public static string toRequestBody(IDictionary<string, string> requestDic)        {            StringBuilder ret = new StringBuilder();            if (0 == requestDic.Count)            {                return ret.ToString();            }            StringBuilder tempItem = new StringBuilder();            ret.Append("{");            foreach (var item in requestDic)            {                tempItem.Append(item.Key).Append(":\"").Append(item.Value).Append("\",");                                ret.Append(tempItem);                tempItem.Clear();               }            int endIndex = ret.ToString().LastIndexOf(',');            ret.Remove(ret.ToString().LastIndexOf(','),1);            //ret.Replace(,);            ret.Append("}");            return ret.ToString();        }

调用示例:

IDictionary<string, string> body = new Dictionary<string, string>();                body.Add("_PrincipalName", principalName);                                body.Add("_Count", count);                var bodyStr = RequestHelper.toRequestBody(body);                               string mailList = RequestHelper.httpPost(getMailUrl, bodyStr);

JSON帮助类

public class JsonHelper    {        public static HttpResponseMessage SerializeObjectToHttp(object o)        {            string json = JsonConvert.SerializeObject(o);            return   new HttpResponseMessage { Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json") };         }        /// <summary>        /// 将对象序列化为JSON格式        /// </summary>        /// <param name="o">对象</param>        /// <returns>json字符串</returns>        public static string SerializeObject(object o)        {            string json = JsonConvert.SerializeObject(o);            return json;        }        /// <summary>        /// json 转换为object        /// </summary>        /// <param name="json"></param>        /// <returns></returns>        public static object DeserializeObject(string json)        {            return JsonConvert.DeserializeObject(json);        }        /// <summary>        /// 将对象序列化为JSON格式        /// </summary>        /// <param name="o">对象</param>        /// <returns>json字符串</returns>        public static string SerializeDatatable(DataTable dt)        {            //string json = JsonConvert.SerializeObject(dt, new DataTableConverter());            //return json;            StringBuilder JsonString = new StringBuilder();            //Exception Handling                      if (dt != null && dt.Rows.Count > 0)            {                JsonString.Append("[ ");                for (int i = 0; i < dt.Rows.Count; i++)                {                    JsonString.Append("{ ");                    for (int j = 0; j < dt.Columns.Count; j++)                    {                        if (j < dt.Columns.Count - 1)                        {                            JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\",");                        }                        else if (j == dt.Columns.Count - 1)                        {                            JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\"");                        }                    }                    /*end Of String*/                    if (i == dt.Rows.Count - 1)                    {                        JsonString.Append("} ");                    }                    else                    {                        JsonString.Append("}, ");                    }                }                JsonString.Append("]");                return JsonString.ToString();            }            else            {                return null;            }          }        /// <summary>        /// 解析JSON字符串生成对象实体        /// </summary>        /// <typeparam name="T">对象类型</typeparam>        /// <param name="json">json字符串(eg.{"ID":"112","Name":"石子儿"})</param>        /// <returns>对象实体</returns>        public static T DeserializeJsonToObject<T>(string json) where T : class        {            JsonSerializer serializer = new JsonSerializer();            StringReader sr = new StringReader(json);            object o = serializer.Deserialize(new JsonTextReader(sr), typeof(T));            T t = o as T;            return t;        }        /// <summary>        /// 解析JSON数组生成对象实体集合        /// </summary>        /// <typeparam name="T">对象类型</typeparam>        /// <param name="json">json数组字符串(eg.[{"ID":"112","Name":"石子儿"}])</param>        /// <returns>对象实体集合</returns>        public static List<T> DeserializeJsonToList<T>(string json) where T : class        {            JsonSerializer serializer = new JsonSerializer();            StringReader sr = new StringReader(json);            object o = serializer.Deserialize(new JsonTextReader(sr), typeof(List<T>));            List<T> list = o as List<T>;            return list;        }        /// <summary>        /// 反序列化JSON到给定的匿名对象.        /// </summary>        /// <typeparam name="T">匿名对象类型</typeparam>        /// <param name="json">json字符串</param>        /// <param name="anonymousTypeObject">匿名对象</param>        /// <returns>匿名对象</returns>        public static T DeserializeAnonymousType<T>(string json, T anonymousTypeObject)        {            T t = JsonConvert.DeserializeAnonymousType(json, anonymousTypeObject);            return t;        }        #region dataTable转换成Json格式        /// <summary>              /// dataTable转换成Json格式              /// </summary>              /// <param name="dt"></param>              /// <returns></returns>              public static string DataTableToJson(DataTable dt)        {            StringBuilder jsonBuilder = new StringBuilder();            jsonBuilder.Append("{\"");            jsonBuilder.Append(dt.TableName.ToString());            jsonBuilder.Append("\":[");            for (int i = 0; i < dt.Rows.Count; i++)            {                jsonBuilder.Append("{");                for (int j = 0; j < dt.Columns.Count; j++)                {                    jsonBuilder.Append("\"");                    jsonBuilder.Append(dt.Columns[j].ColumnName);                    jsonBuilder.Append("\":\"");                    jsonBuilder.Append(dt.Rows[i][j].ToString());                    jsonBuilder.Append("\",");                }                jsonBuilder.Remove(jsonBuilder.Length - 1, 1);                jsonBuilder.Append("},");            }            jsonBuilder.Remove(jsonBuilder.Length - 1, 1);            jsonBuilder.Append("]");            jsonBuilder.Append("}");            return jsonBuilder.ToString();        }        #endregion dataTable转换成Json格式        #region DataSet转换成Json格式        /// <summary>              /// DataSet转换成Json格式              /// </summary>              /// <param name="ds">DataSet</param>              /// <returns></returns>              public static string DataSetToJson(DataSet ds)        {            StringBuilder json = new StringBuilder();            foreach (DataTable dt in ds.Tables)            {                json.Append("{\"");                json.Append(dt.TableName);                json.Append("\":");                json.Append(DataTableToJson(dt));                json.Append("}");            }            return json.ToString();        }        #endregion       }

扩展方法

Distinct扩展

项目中有时要对一个list去重,看到一个很优雅的方法:

public class CommonEqualityComparer<T, V> : IEqualityComparer<T>    {        private Func<T, V> keySelector;        public CommonEqualityComparer(Func<T, V> keySelector)        {            this.keySelector = keySelector;        }        public bool Equals(T x, T y)        {            return EqualityComparer<V>.Default.Equals(keySelector(x), keySelector(y));        }        public int GetHashCode(T obj)        {            return EqualityComparer<V>.Default.GetHashCode(keySelector(obj));        }    } public static class DistinctExtensions    {        public static IEnumerable<T> Distinct<T, V>(this IEnumerable<T> source, Func<T, V> keySelector)        {            return source.Distinct(new CommonEqualityComparer<T, V>(keySelector));        }    }

使用示例:

去掉ID值重复的列表

userList = userList.Distinct(u => u.ID).ToList();
原创粉丝点击