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, , 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实例的更多相关文章
- asp.net中http提交数据所遇到的那些坑
http提交数据有两种形式,get和post,不知道的同学请联系度娘. 1.aspnet:MaxHttpCollectionKeys 业务场景:业务很简单,手机端读取本地通讯录,将所有通讯录提交到后台 ...
- ASP.NET中POST提交数据并跳转页面
需求:先Post提交数据,然后跳转到目标页面 找了好久才发现这个神奇的类HttpHelper.原理很简单,利用html的from表单拼接,然后执行 使用方法: NameValueCollection ...
- Asp.Net Mvc4 Ajax提交数据成功弹框后跳转页面
1.cshtml页面代码 @model Model.UserInfo @{ ViewBag.Title = "Edit"; var options = new AjaxOp ...
- Asp.Net模拟post提交数据方法
方法1: System.Net.WebClient WebClientObj = new System.Net.WebClient(); System.Collections.Specialized. ...
- 采用get方式提交数据到服务器实例
GetDemo项目目录 一.编写StreamTools.java /** * */ package com.hyzhou.getdemo.utiils; import java.io.ByteArra ...
- Silverlight实例教程 - Validation用户提交数据验证捕获(转载)
Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础 ...
- <转>ASP.NET学习笔记之MVC 3 数据验证 Model Validation 详解
MVC 3 数据验证 Model Validation 详解 再附加一些比较好的验证详解:(以下均为引用) 1.asp.net mvc3 的数据验证(一) - zhangkai2237 - 博客园 ...
- 小范笔记:ASP.NET Core API 基础知识与Axios前端提交数据
跟同事合作前后端分离项目,自己对 WebApi 的很多知识不够全,虽说不必要学全栈,可是也要了解基础知识,才能合理设计接口.API,方便与前端交接. 晚上回到宿舍后,对 WebApi 的知识查漏补缺, ...
- ASP模拟POST请求异步提交数据的方法
这篇文章主要介绍了ASP模拟POST请求异步提交数据的方法,本文使用MSXML2.SERVERXMLHTTP.3.0实现POST请求,需要的朋友可以参考下 有时需要获取远程网站的某些信息,而服务器又限 ...
随机推荐
- Oracle 11g之创建和管理表练习
创建表: SQL> create table name (empno number(4), ename VARCHAR2(10)); 查看表结构: desc name; SQL> desc ...
- STL库之单链表:forward_list
class template forward_list <forward_list> template < class T, class Alloc = allocator<T ...
- OpenJudge 2749 分解因数
1.链接地址: http://bailian.openjudge.cn/practice/2749/ 2.题目: 总时间限制: 1000ms 内存限制: 65536kB 描述 给出一个正整数a,要求分 ...
- IOS 学习笔记 2015-03-20 OC-集合-数组
[NSArray] 一 定义 1 不可变数组 2 oc中数组的元素可以是任何对象 3 数字中装有元素的地址 二 初始化 NSArray *变量 = [[NSArry alloc] initWithOb ...
- php安装过程中遇到的需要安装的问题
http://www.cnblogs.com/kristain/articles/3809243.html 借鉴php安装错误 2013-01-04 19:16:49 分类: 系统运维 环境: ...
- sql server 数据库正在使用该文件的解决办法
今天在帮朋友还原数据库时遇到了一个问题.朋友用的是sql server 2008数据库,本身有一个数据库,他在修改程序的时候,想修改数据库的内容.但是又不想在原数据库中修改.想备份还原出一个数据库然后 ...
- 深度学习算法实践15---堆叠去噪自动编码机(SdA)原理及实现
我们讨论了去噪自动编码机(dA),并讨论了Theano框架实现的细节.在本节中,我们将讨论去噪自动编码机(dA)的主要应用,即组成堆叠自动编码机(SdA),我们将以MNIST手写字母识别为例,用堆叠自 ...
- YII2数据库操作出现类似Database Exception – yii\db\Exception SQLSTATE
yii2安装后,连接数据库,必须要安装pdo_mysql扩展
- Laravel Repository 模式
Repository 模式 为了保持代码的整洁性和可读性,使用Repository Pattern 是非常有用的.事实上,我们也不必仅仅为了使用这个特别的设计模式去使用Laravel,然而在下面的场景 ...
- php自学笔记1
PHP(Personal Home Page的缩写,现已更名Hypertext Preprocessor“超文本预处理器”)静态web开发:html,内容一成不变动态web开发: php(Zend). ...