原由

经常遇到 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. python开发部署时新增数据库中表的方法

    在项目版本让运维部署时,涉及到数据库表的增加问题,想了一下,可以有四种方法 1.使用SQLAlchemy的db.create_all()方法 # -*- coding:utf-8 -*- from f ...

  2. ES6中的迭代器(Iterator)和生成器(Generator)

    前面的话 用循环语句迭代数据时,必须要初始化一个变量来记录每一次迭代在数据集合中的位置,而在许多编程语言中,已经开始通过程序化的方式用迭代器对象返回迭代过程中集合的每一个元素 迭代器的使用可以极大地简 ...

  3. 一个最最简易的RPC框架雏形---转载自梁飞的博客

    查阅RPC与HTTP区别的时候, 无意间发现一篇博客,内容是一个简易的RPC服务框架, 仔细一看, 不得了,博主竟然就是阿里dubbo的作者. 原文链接在此: http://javatar.iteye ...

  4. Ubuntu系统的安装Sublime3

    1.添加Sublime-text-3软件包的软件源 sudo add-apt-repository ppa:webupd8team/sublime-text-3     2.使用以下命令更新系统软件源 ...

  5. CVE-2016-3714 - ImageMagick 命令执行

    ImageMagick是一款使用量很广的图片处理程序,很多厂商都调用了这个程序进行图片处理,包括图片的伸缩.切割.水印.格式转换等等.但近来有研究者发现,当用户传入一个包含『畸形内容』的图片的时候,就 ...

  6. swift AVAudioPlayer播放音频时声音太小

    设置下声音输出的扬声器就行了 代码如下 do { try AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionP ...

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

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

  8. hexdump命令的使用

    hexdump命令是Linux下的打印16进制的利器,它可以按我们指定的格式输出16进制,特别有用,配合eeprom来用简直是绝配. 今天我们来介绍一个hexdump命令的使用: 首先我们准备一个测试 ...

  9. appach-maven-3.5.0配置与下载

    今天需要搭建javaweb开发的环境,需要配置maven.弄了半天终于配置好了.蛋疼的一批.楼主用的是win10的系统.不知道Linux下的也是不是这么坑! 首先,需要把maven的包下载下来.进入h ...

  10. Can not issue data manipulation statements with executeQuery().解决的方法

    query是查询用的,而update是插入和更新,删除修改用的. executeQuery()语句是用于产生单个结果集的语句,如select语句,在什么情况下用,当你的数据库已经保存了数据后,要进行查 ...