博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[DotNet]利用反射自动将Web前台传递的数据初始化到对象中
阅读量:6351 次
发布时间:2019-06-22

本文共 2094 字,大约阅读时间需要 6 分钟。

  Web程序的前后台数据传递一直比较繁琐,最简单的方式可能是form提交后台提取信息进行判断。用 Python 开发习惯了Dict 格式参数的方便。最近帮朋友处理一个 DotNet 程序的时候,突然感觉这些数据传递处理别扭了。前台传递过来的数据后台需要一个个的对应到ORM对象中,实在是太麻烦了。

  有没有更好更方便的方式呢? 于是有了下面的思路。

  假设做一个约束,将Web Html中元素的ID 、 Name和后台对象字段名一至, 然后利用DotNet反射提取对象字段值和
Form提交来的名称对应赋值,就自动完成了对象数据的初始化。
代码测试一下,还是挺好用的 呵呵,如果处于安全考虑,Web Form提前可以用js进行数据校验,后台赋值时也可以跟
据数据类型进行校验,同样可以DoubleCheck 呵呵。。。

示例代码

HTML部分

添加权限
权限名称:
 

JS部分

/// 创建栏目 function CreatePermission() {
var validate = new Validate().validate( {
Name: { min: 1, message: "名称不能为空!" } }); if (validate) {
var per = new Permission(); per.create($("#form1").serializeArray()); } } -------------- // 创建 prototype.create = function(permission, callback) {
$.post("/Permission/DoCreatePermission", permission, function(data) {
if (data == "Success") {
alert("创建成功!"); } else {
alert("创建失败!"); } if (!isUndefinedOrNull(callback)) callback(data.Result); if (data == "Success") TextBoxAllClear(); }); };

DotNet部分

var per = this.GetArguments(new Permission(), this.Request.Form); // 调用 // 示例 ///  /// 获取参数值 ///  ///  /// 
protected T GetArguments
(T t, System.Collections.Specialized.NameValueCollection form) {
// 提取所有Key值,并转化成小写 List
keys = new List
(); foreach (var k in form.AllKeys) {
keys.Add(k.ToLower()); } // 构造实例类型,并设置属性值 foreach (PropertyInfo pi in t.GetType().GetProperties()) {
if (keys.Contains(pi.Name.ToLower())) {
var value = Convert.ChangeType(form.Get(pi.Name), pi.PropertyType); pi.SetValue(t, value, null); } } return t; }

转载地址:http://idmla.baihongyu.com/

你可能感兴趣的文章
D语言/DLang 2.085.1 发布,修复性迭代
查看>>
感觉JVM的默认异常处理不够好,既然不好那我们就自己来处理异常呗!那么如何自己处理异常呢?...
查看>>
Java 基础 之 算数运算符
查看>>
Windows下配置安装Git(二)
查看>>
一个最简单的基于Android SearchView的搜索框
查看>>
铁路开通WiFi“钱景”不明
查看>>
Nutanix领衔的超融合能带来新存储黄金时代吗?
查看>>
Facebook申请专利 或让好友及陌生人相互拼车
查看>>
电力“十三五”规划:地面光伏与分布式的分水岭
查看>>
美联社再告FBI:要求公开请黑客解锁iPhone花费
查看>>
三星电子出售希捷和夏普等四家公司股份
查看>>
任志远:当云计算遇上混合云
查看>>
思科联手发那科 用物联网技术打造无人工厂
查看>>
智慧城市首要在政府利用大数据的智慧
查看>>
2015年物联网行业:巨头展开专利大战
查看>>
以自动化测试撬动遗留系统
查看>>
网络安全初创公司存活之道
查看>>
《图解CSS3:核心技术与案例实战》——1.2节浏览器对CSS3的支持状况
查看>>
《Android应用开发》——2.4节应用类
查看>>
继 One Step 后,锤子科技 Big Bang 正式开源
查看>>