博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于asp.net MVC 中的TryUpdateModel方法
阅读量:6048 次
发布时间:2019-06-20

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

有比较才会有收货,有需求才会发现更多。

在传统的WebFormk开发工作中,我们常常会存在如下的代码块

//保存        protected void btnSubmit_Click(object sender, EventArgs e)        {            try            {                BLL.MoneyBll cun = new BLL.MoneyBll();                Model.Money m1 = new Model.Money();                m1.Commany = int.Parse(this.Commany.Text);                m1.CountryId = int.Parse(this.cou.Value);                m1.CountryIds = "";                m1.MaxX = float.Parse(this.MaxX.Text);                m1.MinX = float.Parse(this.MinX.Text);                if (!string.IsNullOrEmpty(this.XPrice.Text))                 {                    m1.XPrice = float.Parse(this.XPrice.Text);                }                if (!string.IsNullOrEmpty(this.YPrice.Text))                {                    m1.YPrice = float.Parse(this.YPrice.Text);                }                m1.Type = int.Parse(this.Type.Text);                int res = cun.Add(m1);                //JscriptMsg("添加费用信息成功!", "moneyList.aspx", "Success", "parent.loadMenuTree");            }            catch             {                //JscriptMsg("添加费用信息失败,请检查录入合法性!", "moneyList.aspx", "Error", "parent.loadMenuTree");            }        }

即:在点击保存按钮的时候将表单Form内个表单元素的值一一获取,转换为相对应的目标类型,赋值到一个新的实体类对象属性上,用于实现相关的功能点开发。

以上的代码块在我们日常的开发工作中频频出现,相似程度可谓高之又高。

在mvc中为该情况的通用带来了优良的解决方案,——TryUpdateModel  用法如下

FunModel model = new FunModel();            TryUpdateModel(model, formCollection.AllKeys);

其中

formCollection.AllKeys是可选参数,如果未传入该参数,TryUpdateModel会获取当前请求上下文中所有的key值,包括Request.QueryString(eg:a.aspx?a=1&b=2)中的key值,以及Request.Form中所有的key值,还包括整个请求上下文中所有的数据包键值对中的健, 然后循环这些所有的健,通过反射机制获取实体对象model对应key的属性,判断如果存在名称为key的属性,那么获取数据包键值对中改key对应的value值,通过的反射的形式赋值到实体类的对应属性中去,完成数据包内数据到实体对象的装配,在此过程之中同样存在数据包中的value值到实体对象属性Type的类型转换,省略了繁琐的int.Parse(this.Commany.Text)判断,转型操作,大大简化了功能开发中类似代码的出现。formCollection.AllKeys————————Request.Form中所有的key值。

 

转载于:https://www.cnblogs.com/caoheyang911016/p/3832988.html

你可能感兴趣的文章
《Web异步与实时交互——iframe AJAX WebSocket开发实战》—— 第1章 Web交互开发相关技术概述...
查看>>
为 Vim 添加 Sublime Text 的多重选取特性
查看>>
《循序渐进学Spark 》Spark架构与集群环境
查看>>
数据有重量?存储数据后手机会觉变重吗?
查看>>
《树莓派开发实战(第2版)》——2.2 查看自己的IP地址
查看>>
《maven官方文档》5分钟开始Maven
查看>>
《Java EE 7精粹》—— 3.7 服务器和客户端扩展点
查看>>
[小白技巧]如何在Linux上检查MySQL数据表的存储引擎类型
查看>>
《Nmap渗透测试指南》—第9章9.7节审计VNC服务器
查看>>
Ubuntu 14.04中修复“update information is outdated”错误
查看>>
《R语言数据分析》——3.5 小结
查看>>
被埋没的SQL优化利器——Oracle SQL monitor
查看>>
Android App瘦身实战
查看>>
阿里云有个“怪”博士团队,竟用AI让1亿人吃上了热饭
查看>>
Kafka 消息监控 - Kafka Eagle
查看>>
Centos 7 service 命令的更改,systemctl命令简单实用实例
查看>>
数据透视 - 商场(如沃尔玛)选址应用
查看>>
shell脚本入门篇
查看>>
解决webapp 键盘不隐藏
查看>>
[LeetCode]--8. String to Integer (atoi)
查看>>