原由

经常遇到 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表单转实体类的更多相关文章

  1. PowerDesigner16.5物理数据表生成C#实体类Model

    原文:PowerDesigner16.5物理数据表生成C#实体类Model 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/da454122373/a ...

  2. GG_Model 类库与数据库表对应建立实体类

    3.4.GG_Model 类库与数据库表对应建立实体类 我这里不教大家写代码,直接用TT模板自动生成,省去写代码的麻烦. A. 三个文件MysqlDbhelper.ttinclude .mysqlMa ...

  3. SQLServer之数据库表转化为实体类【带注释】

    1.在开发过程中,有时候需要将数据库表转化为实体类.手敲除了不方便,还容易出错.本着DRY+懒人原则,参考了一位老司机的博客[见底部],并在其基础上进行了优化.[原先是不带注释的] DECLARE @ ...

  4. java后台表单验证工具类

    /** * 描述 java后台表单验证工具类 * * @ClassName ValidationUtil * @Author wzf * @DATE 2018/10/27 15:21 * @VerSi ...

  5. JDBCUtils,根据当前MySQL数据库下面的表生成java实体类

    自己简单写的JDBCUtils,可以根据当前数据库下面的表生成java实体类,代码萌新,请多多包涵. 初始化配置: //驱动程序名//不固定,根据驱动 static String driver = & ...

  6. net core天马行空系列-可用于依赖注入的,数据库表和c#实体类互相转换的接口实现

    1.前言 hi,大家好,我是三合.作为一名程序猿,日常开发中,我们在接到需求以后,一般都会先构思一个模型,然后根据模型写实体类,写完实体类后在数据库里建表,接着进行增删改查, 也有第二种情况,就是有些 ...

  7. ASP.NET MVC 表单提交多层子级实体集合数据到控制器中

    于遇到了项目中实体类嵌套多层子级实体集合,并且子级实体集合的数据需要提交保存到数据库中的问题.针对此情况需要进行一些特殊的处理才可以将整个 实体类及子级实体集合数据提交表单到控制器中,解决的方法是根据 ...

  8. SpringMvc上传图片及表单提交(单文件+实体类参数提交)

    前两天做项目用到了Springmvc的文件上传来上传图片,由于和这个普通的Java文件上传处理流程不太一样,所以做的时候碰了壁,一顿百度,博客,要不就是一部分代码,要不就是看不懂,用不会的代码,下面来 ...

  9. [转]掌握 ASP.NET 之路:自定义实体类简介 --自定义实体类和DataSet的比较

    转自: http://www.microsoft.com/china/msdn/library/webservices/asp.net/CustEntCls.mspx?mfr=true 发布日期 : ...

随机推荐

  1. MySQL学习笔记(二):MySQL数据类型汇总及选择参考

    本文主要介绍了MySQL 的常用数据类型,以及实际应用时如何选择合适的类型.  ******几个通用的简单原则:******* 1. 更小的通常更好.但是要确保没有低估需要存储的值的范围,如果无法确定 ...

  2. css3-d ,动画,圆角

    一.3D 开启元素3D transform-style: preserve-3d; Z轴 正数 屏幕外,反之屏幕内 近大远小 perspective: length (必须大于等于0) -- 在3D元 ...

  3. react 入门教程 阮一峰老师真的是榜样

    -  转自阮一峰老师博客 React 入门实例教程   作者: 阮一峰 日期: 2015年3月31日 现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Nati ...

  4. 根据百度,gps坐标获取天气

    楼主用的是阿里天气免费版,限制1000次,可以重复购买 下面放代码 var orgWindow = new OrganizeWindowProxy(WorkContext); var orgInfo ...

  5. JavaScript关于js垃圾回收

    js中会自动回收那些我们不使用的变量 一般回收算法用的是一个回收器, 这个回收器周期性的遍历程序运行中的所有变量, 并且给这些变量所引用的值做上一个标记, 如果被引用的值是一个对象或是一个数组, 那么 ...

  6. C语言开发面试题

    (以下是题主参加的一家偏向Linux平台开发的公司软件岗位笔试题,分享原题,后面附上题主91分的部分参考答案^V^) 一.(8分)请问一下程序输出什么结果? char *getStr(void) { ...

  7. [技术]浅谈OI中矩阵快速幂的用法

    前言 矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中,矩阵的运算是数值分析领域的重要问题. 基本介绍 (该部分为入门向,非入门选手可以跳过) 由 m行n列元素排列成的矩形阵列.矩阵里的 ...

  8. HPU--1221 Fibonacci数列

    题目描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. 输入 输入包含一个整数n. ...

  9. 1.配置vsftp服务器

    1.安装 vsftp yum -y install ftp vsftpd 2.查看配置文件所在路径 rpm -qc vsftpd 3.备份vsftpd文件 cp vsftpd.conf vsftpd. ...

  10. SQL Server数据库基础笔记

    启动和停止SQL Server服务三种形式 后台启动服务 计算机->右键->管理->服务和应用程序->服务->sql server(MSSQLSERVER) SQL Se ...