ASP.NET From表单转实体类
原由
经常遇到 int Age=Convert.ToInt32(this.txtAge.Text);
这种蛋疼的代码,特写次方法。
之所以抛出异常是希望知道转换失败,格式错误的属性是什么,方便调试。
新版本
//新版本,可以再globa.ascx里面设置开发模式
//以便于调试错误
//表单转实体对象V2版
public class HttpRequestHelper
{
/// <summary>
/// 开发模式,设置成开发模式后抛出异常,可查看出错的属性,和类型
/// </summary>
public static bool DevMode { get; set; }
#region 表单转换成实体模型
/// <summary>
/// 表单转换成实体模型
/// 用法:1、插入,先new一个对象传入;
/// 2、更新,先从数据库查出这个对象传入
/// </summary>
/// <param name="obj">泛型对象</param>
/// <returns></returns>
public static T ConvertForm2Model<T>(T obj)
{
if (null == obj)
{
obj = default(T);
obj = Activator.CreateInstance<T>();
}
Type type = typeof(T);
foreach (var p in type.GetProperties())
{
string result = HttpContext.Current.Request.Params[p.Name];
if (!string.IsNullOrWhiteSpace(result))
{
try
{
p.SetValue(obj, Convert.ChangeType(result, p.PropertyType), null);
}
catch(Exception ex)
{
if (DevMode)
{
throw new Exception("类型转换错误,变量:" + p.Name + ",类型:" + p.PropertyType + ",错误信息:" + ex.Message);
}
else
{
//记录日志。。。。 }
}
}
}
return obj; }
#endregion
}
旧版本
//////////////////
///各位有什么好想法,请给个建议
//460247986@qq.com
////////////////// public class HttpRequestHelper<T> where T : class,new()
{
#region 表单转换成实体模型
/// <summary>
/// 表单转换成实体模型
/// 用法:1、插入,先new一个对象传入;
/// 2、更新,先从数据库查出这个对象传入
/// </summary>
/// <param name="obj">泛型对象</param>
/// <returns></returns>
public static T ConvertForm2Model(T obj=null)
{
if (null == obj)
{
obj = default(T);
obj = Activator.CreateInstance<T>();
}
Type type = typeof(T);
foreach (var p in type.GetProperties())
{
string result = HttpContext.Current.Request.Params[p.Name];
if (!string.IsNullOrWhiteSpace(result))
{
try
{
p.SetValue(obj, Convert.ChangeType(result, p.PropertyType), null);
}
catch(Exception ex)
{
throw new Exception("类型转换错误,变量:" + p.Name + ",类型:" + p.PropertyType+",错误信息:" + ex.Message);
}
}
}
return obj; }
#endregion
}
ASP.NET From表单转实体类的更多相关文章
- PowerDesigner16.5物理数据表生成C#实体类Model
原文:PowerDesigner16.5物理数据表生成C#实体类Model 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/da454122373/a ...
- GG_Model 类库与数据库表对应建立实体类
3.4.GG_Model 类库与数据库表对应建立实体类 我这里不教大家写代码,直接用TT模板自动生成,省去写代码的麻烦. A. 三个文件MysqlDbhelper.ttinclude .mysqlMa ...
- SQLServer之数据库表转化为实体类【带注释】
1.在开发过程中,有时候需要将数据库表转化为实体类.手敲除了不方便,还容易出错.本着DRY+懒人原则,参考了一位老司机的博客[见底部],并在其基础上进行了优化.[原先是不带注释的] DECLARE @ ...
- java后台表单验证工具类
/** * 描述 java后台表单验证工具类 * * @ClassName ValidationUtil * @Author wzf * @DATE 2018/10/27 15:21 * @VerSi ...
- JDBCUtils,根据当前MySQL数据库下面的表生成java实体类
自己简单写的JDBCUtils,可以根据当前数据库下面的表生成java实体类,代码萌新,请多多包涵. 初始化配置: //驱动程序名//不固定,根据驱动 static String driver = & ...
- net core天马行空系列-可用于依赖注入的,数据库表和c#实体类互相转换的接口实现
1.前言 hi,大家好,我是三合.作为一名程序猿,日常开发中,我们在接到需求以后,一般都会先构思一个模型,然后根据模型写实体类,写完实体类后在数据库里建表,接着进行增删改查, 也有第二种情况,就是有些 ...
- ASP.NET MVC 表单提交多层子级实体集合数据到控制器中
于遇到了项目中实体类嵌套多层子级实体集合,并且子级实体集合的数据需要提交保存到数据库中的问题.针对此情况需要进行一些特殊的处理才可以将整个 实体类及子级实体集合数据提交表单到控制器中,解决的方法是根据 ...
- SpringMvc上传图片及表单提交(单文件+实体类参数提交)
前两天做项目用到了Springmvc的文件上传来上传图片,由于和这个普通的Java文件上传处理流程不太一样,所以做的时候碰了壁,一顿百度,博客,要不就是一部分代码,要不就是看不懂,用不会的代码,下面来 ...
- [转]掌握 ASP.NET 之路:自定义实体类简介 --自定义实体类和DataSet的比较
转自: http://www.microsoft.com/china/msdn/library/webservices/asp.net/CustEntCls.mspx?mfr=true 发布日期 : ...
随机推荐
- scanf返回值问题
在家养病,闲着没事看C primer plus,看到书中对于scanf输入的判断,常用如下方法: 此时它将返回1视为我输入成功,如果不为1则视为输入失败.那到底scanf的返回值具体指的是什么呢? 例 ...
- Verilog 任意(奇数/偶数)分频器
参加过一次笔试,让实现3分频,楼主当时是懵逼的,脑子里只知道同时利用上升沿和下降沿,本来写对了,慌张面试,脑子不管用了,(因为是手写,只能用脑子仿真)后来又给改错了,捂脸... 还是逻辑不清晰,现在自 ...
- year:2017 month:7 day:18
2017-07-18 JavaScript 1javascript的控制语句 (1) if语句 (2)if(){}else 语句 (3) if(){} else if(){ }语句 (4)switch ...
- 4. leetcode 461. Hamming Distance
The Hamming distance between two integers is the number of positions at which the corresponding bits ...
- 双向循环链表(C语言描述)(一)
双向循环链表是链表的一种,它的每个节点也包含数据域和指针域.为了方便程序维护,可以单独为数据域定义一种数据类型,这里以整型为例: typedef int LinkedListData; 双向循环链表( ...
- python--DenyHttp项目(2)--ACM监考客户端测试版(1阶段客户端总结)
客户端: 1.既然脚本是让别人用的,怎么说也得有个界面,(虽然很low) ''' DenyManager.py 调用客户端与客户端界面 ''' from DenyClient import * fro ...
- RabbitMQ --- Work Queues(工作队列)
目录 RabbitMQ --- Hello Mr.Tua 前言 Work Queues 即工作队列,它表示一个 Producer 对应多个 Consumer,包括两种分发模式:轮循分发(Round-r ...
- 使用yeoman构建angular应用
本文将介绍如何亲手来完成一个yeoman的generator,以实现快速构建最适合自己的项目. 本文将实现的generator起名为ngtimo,依照yeoman的命名规矩就叫做generator-n ...
- JVM笔记——技术点汇总
目录 · 初步认识 · Java里程碑(关键部分) · 理解虚拟机 · Java虚拟机种类 · Java语言规范 · Java虚拟机规范 · 基本结构 · Java堆(Heap) · Java栈(St ...
- 微信小程序简单入门2
底部tab "tabBar": {"list": [{"pagePath": "pages/lists/lists",& ...