把URL传递参数转变成自定义实体方法
先定义下要获取的实体:
public class InputClass
{
public long Id { get; set; }
public int Status { get; set; } public DateTime UdpateTime { get; set; }
}
将url参数转换成对应字典类型
private Dictionary<string, string> GetInputNameValues(string value)
{
var array = value.Split(new char[] { '&' }, StringSplitOptions.RemoveEmptyEntries);
char[] split = new char[] { '=' };
Dictionary<string, string> result = new Dictionary<string, string>(array.Length);
foreach (var item in array)
{
var tempArr = item.Split(split, StringSplitOptions.RemoveEmptyEntries);
if (tempArr.Length == 2)
{
result.Add(tempArr[0], tempArr[1]);
}
}
return result;
}
将实体类转换字典方法:
private Dictionary<string, System.Reflection.PropertyInfo> GetProperty(Type type)
{
var pro = type.GetProperties();
var result = new Dictionary<string, PropertyInfo>(pro.Length);
var jsonPropertyType = typeof(JsonPropertyAttribute);
foreach (var item in pro)
{
var name = item.Name;
var jsonpList = (JsonPropertyAttribute[])(item.GetCustomAttributes(jsonPropertyType, false));
if (jsonpList.Length > 0)
{
var jsonp = jsonpList.First();
JsonPropertyAttribute att = new JsonPropertyAttribute();
name = jsonp.PropertyName;
}
result.Add(name, item);
}
return result;
}
主方法:
var type = typeof(InputClass);
string inputString = "Id=1111&Status=1&UdpateTime=2015-5-9";
var model = new InputClass();
var nameValues = GetInputNameValues(inputString);
var propertyKeys = GetProperty(type);
foreach (var item in propertyKeys)
{
string value;
if (nameValues.TryGetValue(item.Key, out value))
{
item.Value.SetValue(model, Convert.ChangeType(value, item.Value.PropertyType));
}
}
return model;
返回的model 就是封装好的实体。
把URL传递参数转变成自定义实体方法的更多相关文章
- PHP获取不到url传递参数中#&等特殊字符解决方法
有些符号在URL中是不能直接传递的,无法传入PHP处理,比如#&等符号,通过$_GET是获取不到的,比如一个域名https://localhost/url.php?url=yangyufei+ ...
- Spring MVC(六)--通过URL传递参数
URL传递参数时,格式是类似这样的,/param/urlParam/4/test,其中4和test都是参数,这就是所谓的Restful风格,Spring MVC中通过注解@RequestMapping ...
- 【Django】url传递参数
1. url传递参数的特殊字符 在压缩后,可能出现 + - = 空格 这类特殊字符,需要在传递前进行url编码 urllib.enquote(string) 获取参数后 urllib.un ...
- 8)django-示例(url传递参数)
url传递参数有两种,一个是通过普通分组方式,一个是通过带命名分组方式 1.传递方式 1)普通分组方式,传递参数顺序是严格的.如下例子 url(r'^detail-(\d+)-(\d+).html', ...
- html5页面与android页面之间通过url传递参数
html5页面与android页面之间可以通过url传递参数,android将参数放在htm5的url ?后面,js获取url ?号后面的参数. 方法一: <scrīpt> /* 用途 ...
- 用URL传递参数
用URL传递参数,在园子里找到一篇文章解决了自己的问题,地址如下:http://www.cnblogs.com/lolicon/archive/2009/01/19/1378408.html
- 关于Url传递参数
Url传递参数时,后台取值会直接取等号后面的内容,包括引号在内. 比如: http://localhost:8080/user?name='admin' 这是错误的做法,后台获取到的参数是包括引号 ...
- vue-router 利用url传递参数
vue-router 利用url传递参数 :冒号的形式传递参数 在路由配置文件里以:冒号的形式传递参数,这就是对参数的绑定. 1. 在配置文件里以冒号的形式设置参数.我们在/src/router/i ...
- Vue-router 第5节 vue-router利用url传递参数
Vue-router 第5节 vue-router利用url传递参数 目录 Vue-router 第5节 vue-router利用url传递参数 第5节 vue-router利用url传递参数 冒号的 ...
随机推荐
- Unity3d 使用NPOI读写Excel 遇到的问题
开发环境:unity5.3 NPOI(.net 2.0版 http://npoi.codeplex.com/) 运行环境:PC版, 其他平台没有测试 先上效果图: 实现步骤: 1.新建一个Exce ...
- 最牛X的编码套路
最近,我大量阅读了Steve Yegge的文章.其中有一篇叫"Practicing Programming"(练习编程),写成于2005年,读后令我惊讶不已: 与你所相信的恰恰相反 ...
- CentOS 6.5 下载地址
CentOS 6.5 主要改动 Precision Time Protocol(精确时间协议)—— 原先是项技术预览 —— 现在已获全面支持.以下驱动程序支持网络时间戳印:bnx2x.tg3.e100 ...
- 使用openssl库实现des,3des加密
原文地址: 使用openssl库实现des,3des加密 主要是调整了一下格式,以及一些变量的类型,以解决在VC2008下无法编译通过的问题. #include <stdio.h> #in ...
- Java 判断是否为汉字 判断是否为乱码 判断字符串是否为双整型数字 整数 数字
/** * 判断是否为汉字 * * @param str * @return */ public static boolean isGBK(String str) { char[] ch ...
- AFNetworking2.x 使用过程中遇到的问题
1.//以下写一下关于AFNetworking2.0的GET数据请求问题,刚開始的时候没有写以下标红的代码,所以导致有一个问题.错误显演示样例如以下: Error: Error Domain=AFNe ...
- 理解CRC校验
举个最简单的例子,A向B发送一个数字,B如何检测数字在传输过程中有没有发生错误呢? A和B之间,定下一个协议,两边都知道一个除数X,A向B发送数字的时候,同时把余数附带后面发过去.比如,两边定的除数是 ...
- android 处理网络状态——无网,2g,3g,wifi,ethernet,other
今天在一位很牛逼的学长的博客里面看到了这段代码后,很是激动啊,于是就“偷”了过来,嘿嘿....为自己也为更多需要它的程序媛 直接上代码: public class GetNetWorkStateAct ...
- Languages
Languages A language class exists inside the system/Core folder, this class have 2 methods: load - L ...
- linux 学习笔记 GNU工具链简介
我们通常无法直接通过Linux内核,而需要借助Linux内核之上的GUN工具链来进行 文件处理 文本操作 进程管理 等操作. GNU/Linux shell为用户提供了 启动程序 管理文件系统上的文件 ...