• asp.net Post Get提交数据转Model实例


    转自:http://blog.csdn.net/daodaowolf/article/details/8990694

    此功能是将客户端HTTP协议POST GET方式提交的数据转换为某个Model实例,对于客户端浏览器Ajax提交的键值对或json格式数据直接转换为Model类的实例;

    废话不多说,直接贴代码。

    /********************************************************************************
    
    ** 作者:Tyler
    
    ** 创始时间:2013-05-28
    
    ** 描述:通过js ajax 或 HTTP其他方式提交的GET,POST数据转换为指定的Model实例
    
    *********************************************************************************/
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Runtime.Serialization.Json;
    using System.Web.Script.Serialization;
    using System.IO;
    using System.Text;
    using System.Collections.Specialized;
    
    namespace MyHttpRequest
    {
        public class RequestDataToCls
        {
            /// <summary>
            /// Post提交JSON格式转换为实体类
            /// </summary>
            /// <typeparam name="T">类型</typeparam>
            /// <param name="myrequest">Request对象</param>
            /// <returns>T</returns>
            public static T StramTomodelHttpPost<T>(HttpRequest myrequest)
            {
                byte[] byts = new byte[myrequest.InputStream.Length];
                myrequest.InputStream.Read(byts, 0, byts.Length);
                string jsonstr = System.Text.Encoding.Default.GetString(byts);
                if (!String.IsNullOrEmpty(jsonstr))
                {
                    DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
                        JavaScriptSerializer jss = new JavaScriptSerializer();
                        try
                        {
                            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonstr)))
                            {
                                T jsonObject = (T)ser.ReadObject(ms);
                                return jsonObject;
                            }
                        }
                        catch (Exception ex)
                        {
                            throw new Exception("Serialize Error: " + ex.Message);
                        }
                    }
                    else
                        throw new Exception("Not KeyValue ");
            }
    
            /// <summary>
            ///  Post提交Form集合转换为实体类
            /// </summary>
            /// <typeparam name="T">类型</typeparam>
            /// <param name="myrequest">Request对象</param>
            /// <returns>T</returns>
            public static T FormTomodelHttpPost<T>(HttpRequest myrequest)
            {
    
                DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
                NameValueCollection coll = myrequest.Form as NameValueCollection;
                IDictionary<string, object> idc = new Dictionary<string, object>();
                foreach (string name in coll.Keys)
                {
                    idc.Add(name, coll[name].ToString());
                }
                if (idc.Count > 0)
                {
                    JavaScriptSerializer jss = new JavaScriptSerializer();
                    string jsonstr;
                    try
                    {
                        jsonstr = jss.Serialize(idc);
                        using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonstr)))
                        {
                            T jsonObject = (T)ser.ReadObject(ms);
                            return jsonObject;
                        }
                    }
                    catch (Exception ex)
                    {
                        throw new Exception("Serialize Error: " + ex.Message);
                    }
                }
                else
                    throw new Exception("Not KeyValue ");
            }
    
     
    
            /// <summary>
            /// Get提交JSON格式转换为实体类
            /// </summary>
            /// <typeparam name="T">类型</typeparam>
            /// <param name="myrequest">Request对象</param>
            /// <returns>T</returns>
            public static T StramTomodelHttpGet<T>(string queryString)
            {
                string jsonstr = queryString;
                if (!String.IsNullOrEmpty(jsonstr))
                {
                    DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
                    JavaScriptSerializer jss = new JavaScriptSerializer();
                    try
                    {
                        using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonstr)))
                        {
                            T jsonObject = (T)ser.ReadObject(ms);
                            return jsonObject;
                        }
                    }
                    catch (Exception ex)
                    {
                        throw new Exception("Serialize Error: " + ex.Message);
                    }
                }
                else
                    throw new Exception("Not KeyValue ");
            }
    
            /// <summary>
            ///  Get提交QueryString集合转换为实体类
            /// </summary>
            /// <typeparam name="T">类型</typeparam>
            /// <param name="myrequest">Request对象</param>
            /// <returns>T</returns>
            public static T FormTomodelHttpGet<T>(HttpRequest myrequest)
            {
                DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
                NameValueCollection coll = myrequest.QueryString as NameValueCollection;
                IDictionary<string, object> idc = new Dictionary<string, object>();
                foreach (string name in coll.Keys)
                {
                    idc.Add(name, coll[name].ToString());
                }
                if (idc.Count > 0)
                {
                    JavaScriptSerializer jss = new JavaScriptSerializer();
                    string jsonstr;
                    try
                    {
                        jsonstr = jss.Serialize(idc);
                        using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonstr)))
                        {
                            T jsonObject = (T)ser.ReadObject(ms);
                            return jsonObject;
                        }
                    }
                    catch (Exception ex)
                    {
                        throw new Exception("Serialize Error: " + ex.Message);
                    }
                }
                else
                    throw new Exception("Not KeyValue ");
            }
        }
    }
    View Code
  • 相关阅读:
    Flutter开发环境搭建
    Android自定义View-圆形图片控件
    浅析对象的创建过程
    Java对象占用内存大小--Java对象的内存结构分析
    对AQS的简单理解及自定义锁的实现
    IntelliJ IDEA插件开发的简单流程
    IOC之运行时注入-实现Activity的布局注入+控件注入+事件绑定
    动态代理+注解+反射实现View的点击事件绑定
    Java中的注解和反射
    利用短信通知的方式在Tasker中实现收到Android手机短信自动转发到微信
  • 原文地址:https://www.cnblogs.com/cugwx/p/3615754.html
Copyright © 2020-2023  润新知