将DataRow赋值给model中同名属性
/// <summary>
/// 将DataRow赋值给model中同名属性
/// </summary>
/// <typeparam name="T">泛型:model的类型</typeparam>
/// <param name="objmodel">model实例</param>
/// <param name="dtRow">DataTable行数据</param>
public T TableRowToModel<T>(T objmodel, DataRow dtRow)
{
//获取model的类型
Type modelType = typeof(T);
//获取model中的属性
PropertyInfo[] modelpropertys = modelType.GetProperties();
//遍历model每一个属性并赋值DataRow对应的列
foreach (PropertyInfo pi in modelpropertys)
{
//获取属性名称
String name = pi.Name;
if (dtRow.Table.Columns.Contains(name))
{
//非泛型
if (!pi.PropertyType.IsGenericType)
{
pi.SetValue(objmodel, string.IsNullOrEmpty(dtRow[name].ToString()) ? null : Convert.ChangeType(dtRow[name], pi.PropertyType), null);
}
//泛型Nullable<>
else
{
Type genericTypeDefinition = pi.PropertyType.GetGenericTypeDefinition();
//model属性是可为null类型,进行赋null值
if (genericTypeDefinition == typeof(Nullable<>))
{
//返回指定可以为 null 的类型的基础类型参数
pi.SetValue(objmodel, string.IsNullOrEmpty(dtRow[name].ToString()) ? null : Convert.ChangeType(dtRow[name], Nullable.GetUnderlyingType(pi.PropertyType)), null);
}
}
}
}
return objmodel;
}
---调用:
TableRowToModel(model, dt.Rows[0]);
将DataRow赋值给model中同名属性的更多相关文章
- 在Asp.Net MVC中实现RequiredIf标签对Model中的属性进行验证
在Asp.Net MVC中可以用继承ValidationAttribute的方式,自定制实现RequiredIf标签对Model中的属性进行验证 具体场景为:某一属性是否允许为null的验证,要根据另 ...
- CompareValues标签对Model中的属性进行验证
在Asp.Net MVC中实现CompareValues标签对Model中的属性进行验证 在Asp.Net MVC中可以用继承ValidationAttribute的方式,自定制实现Model两个 ...
- 在.Net MVC中自定义ValidationAttribute标签对Model中的属性做验证
写一个继承与ValidationAttribute类的自定义的验证方法 MVC中传递数据时,大多数都会用Model承载数据,并且在传到控制器后,对Model进行一系列的验证. 我平时经常使用的判断方法 ...
- s:textarea中的文本内容在什么时候才能被赋值给Action中的属性?
下面是jsp程序片段: <s:form id="startForm" name ="startForm" action="/hall/hall_ ...
- MVVM Light 新手入门(2) :ViewModel / Model 中定义“属性” ,并在View中调用
今天学习MVVM架构中“属性”的添加并调用,特记录如下,学习资料均来自于网络,特别感谢翁智华的利刃 MVVMLight系列. 一个窗口的基本模型如下: View(视图) -> ViewModel ...
- 在Asp.Net MVC中实现CompareValues标签对Model中的属性进行验证
在Asp.Net MVC中可以用继承ValidationAttribute的方式,自定制实现Model两个中两个属性值的比较验证 具体应用场景为:要对两个属性值的大小进行验证 代码如下所示: /// ...
- WPF:如何高速更新Model中的属性
原文:[WPF/MVVM] How to deal with fast changing properties In this article, I will describe a problem w ...
- DataTable数据赋值给Model通用方法
注:该文属本人原创,今后项目中发现该方法存在BUG会实时更新,转载记得附上原文出处,方便大家获得最新代码. 相信大家在做项目中,经常会根据不同的表new各种不同的Model,当需要对Model进行实例 ...
- 怎样简单灵活地将DataTable中的数据赋值给model
最近在做的一个项目中,有13个方法都需要用到同一种处理方式:通过SQL语句从数据库获取一条指定的数据,并将该数据中的每个值都赋值给一个model,再将这个model中的数据通过微信发送出去.每个方法都 ...
随机推荐
- javac之BridgeMethod及泛型擦除重写
When compiling a class or interface that extends a parameterized class or implements a parameterized ...
- 关联更新 Update
Update a set a.Manage_FunctID=b.Manage_FunctID From Manage_PageUrl a Left join Manage_ButtonBar ...
- maven私服配置
1.maven私服setting.xml的配置 <?xml version="1.0" encoding="UTF-8"?> <setting ...
- 数据库学习---SQL基础(一)
数据库学习---SQL基础(一) 数据库学习---SQL基础(二) 数据库学习---SQL基础(三) SQL(struct query language)结构化查询语言:一种专门与数据库通信的语言, ...
- 机器学习-KNN算法
原理 KNN算法,又叫K近邻算法.就是在训练集中数据和标签已知的情况下,输入测试数据,将测试数据的特征与训练集中对应的特征进行相互比较,找到训练集中与之最为相似的前K个数据,则该测试数据对应的类别就是 ...
- Android JNI初体验
欢迎转载,转载请注明出处:http://www.cnblogs.com/lanrenxinxin/p/4696991.html 开始接触Android JNI层面的内容,推荐一本不错的入门级的书< ...
- Nginx设置静态页面压缩和缓存过期时间的方法
使用nginx服务器的朋友可能都知道需要设置html静态页面缓存与页面压缩与过期时间的设置了,下面我来给各位同学介绍一下配置方法,包括对ico,gif,bmp,jpg,jpeg,swf,js,css, ...
- vs2013 sn key
BWG7X-J98B3-W34RT-33B3R-JVYW9
- .net Core学习笔记之MemoryCache
.NET Core支持多种不同的缓存,其中包括MemoryCache,它表示存储在Web服务器内存中的缓存: 内存中的缓存存储任何对象; 分布式缓存界面仅限于byte[] 1:在.net co ...
- request:fail 小程序要求的 TLS 版本必须大于等于 1.2
把以下代码复制到txt后,把后缀改成reg扩展名的文件,然后双击运行一下,运行完后重启一下服务器,就可以了. Windows Registry Editor Version 5.00 [HKEY_LO ...