转自: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, , 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 > )
{
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 > )
{
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 ");
}
}
}

asp.net Post Get提交数据转Model实例的更多相关文章

  1. asp.net中http提交数据所遇到的那些坑

    http提交数据有两种形式,get和post,不知道的同学请联系度娘. 1.aspnet:MaxHttpCollectionKeys 业务场景:业务很简单,手机端读取本地通讯录,将所有通讯录提交到后台 ...

  2. ASP.NET中POST提交数据并跳转页面

    需求:先Post提交数据,然后跳转到目标页面 找了好久才发现这个神奇的类HttpHelper.原理很简单,利用html的from表单拼接,然后执行 使用方法: NameValueCollection ...

  3. Asp.Net Mvc4 Ajax提交数据成功弹框后跳转页面

    1.cshtml页面代码 @model Model.UserInfo @{     ViewBag.Title = "Edit"; var options = new AjaxOp ...

  4. Asp.Net模拟post提交数据方法

    方法1: System.Net.WebClient WebClientObj = new System.Net.WebClient(); System.Collections.Specialized. ...

  5. 采用get方式提交数据到服务器实例

    GetDemo项目目录 一.编写StreamTools.java /** * */ package com.hyzhou.getdemo.utiils; import java.io.ByteArra ...

  6. Silverlight实例教程 - Validation用户提交数据验证捕获(转载)

    Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础 ...

  7. <转>ASP.NET学习笔记之MVC 3 数据验证 Model Validation 详解

    MVC 3 数据验证 Model Validation 详解  再附加一些比较好的验证详解:(以下均为引用) 1.asp.net mvc3 的数据验证(一) - zhangkai2237 - 博客园 ...

  8. 小范笔记:ASP.NET Core API 基础知识与Axios前端提交数据

    跟同事合作前后端分离项目,自己对 WebApi 的很多知识不够全,虽说不必要学全栈,可是也要了解基础知识,才能合理设计接口.API,方便与前端交接. 晚上回到宿舍后,对 WebApi 的知识查漏补缺, ...

  9. ASP模拟POST请求异步提交数据的方法

    这篇文章主要介绍了ASP模拟POST请求异步提交数据的方法,本文使用MSXML2.SERVERXMLHTTP.3.0实现POST请求,需要的朋友可以参考下 有时需要获取远程网站的某些信息,而服务器又限 ...

随机推荐

  1. JS中(function(){xxx})(); 这种写法是什么意思?

    自执行匿名函数: 常见格式:(function() { /* code */ })(); 解释:包围函数(function(){})的第一对括号向脚本返回未命名的函数,随后一对空括号立即执行返回的未命 ...

  2. Ext.Net学习笔记05:Ext.Net DirectEvents用法详解

    Ext.Net通过DirectEvents进行服务器端异步的事件处理.我们在 Ext.Net用法概览 这篇中已经简单的介绍了DirectEvents,今天我们将详细的介绍一下DirectEvents. ...

  3. mini2440移植uboot-2008.10 (一)

    今天是我申请此博客的第一天,从现在开始养成每次学完新东西,都要写博客进行总结的习惯!!!Come on! 首先就从这两天学的uboot开始吧,这两天学这个东西郁闷死了,不知道该怎么去学,尤其是到nan ...

  4. linux下安装phpredis

    一.redis安装 1. yum install redis (不行的先执行:yum install epel-release,再yum install redis) 2.启动服务 redis-ser ...

  5. Mysql存储过程知识,案例--mysql存储过程基本函数

    Mysql存储过程知识,案例: create procedure delete_setting(in p_settingid integer) begin delete from setting wh ...

  6. TDirectory.Delete 创建删除目录简单示例

    使用函数: 1.System.IOUtils.TDirectory.CreateDirectory//创建目录 2.System.IOUtils.TDirectory.Exists        // ...

  7. Python里隐藏的 " 诗 "

    在 Python 的Lib目录里有一个:this.Py (或者在交互式解释器中输入import this) 它其实是隐藏的一首诗 The Zen of Python, by Tim Peters &l ...

  8. Javascript 备忘

    1遍历所有属性 var person={fname:"John",lname:"Doe",age:25}; for (x in person) { txt=tx ...

  9. Android开发者指南-方位传感器-Position Sensor

    Android开发者指南-方位传感器-Position Sensor 转载自:http://blog.sina.com.cn/s/blog_48d4913001010zsu.html Position ...

  10. POJ2103 Jackpot

    Description The Great Dodgers company has recently developed a brand-new playing machine. You put a ...