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

在传统的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值。

关于asp.net MVC 中的TryUpdateModel方法的更多相关文章

  1. 在 ASP.NET MVC 中充分利用 WebGrid (microsoft 官方示例)

    在 ASP.NET MVC 中充分利用 WebGrid https://msdn.microsoft.com/zh-cn/magazine/hh288075.aspx Stuart Leeks 下载代 ...

  2. ASP.NET MVC中实现多个按钮提交的几种方法

    有时候会遇到这种情况:在一个表单上需要多个按钮来完成不同的功能,比如一个简单的审批功能. 如果是用webform那不需要讨论,但asp.net mvc中一个表单只能提交到一个Action处理,相对比较 ...

  3. ASP.NET MVC中的模型装配 封装方法 非常好用

    下面说一下 我们知道在asp.net mvc中 视图可以绑定一个实体模型 然后我们三层架构中也有一个model模型 但是这两个很多时候却是不一样的对象来的 就拿微软的官方mvc例子来说明 微软的视图实 ...

  4. ASP.NET MVC中分析淘宝网页发生乱码标题搞定方法

    ASP.NET MVC中分析淘宝网页发生乱码标题搞定方法 近来正在分析淘宝中商品的信息,效果发生乱码,如: 原因便是中文字符格式发生冲突,ASP.NET MVC 默认采用utf-8,可是淘宝网页采用g ...

  5. Asp.net MVC 中超链接的三个方法及比较

    在Asp.net WebForm开发中,我们通过a标签进行跳转时,通常的写法是:<a href="index.aspx">首页</a>, 在Asp.net ...

  6. ASP.NET MVC 中CSS JS压缩合并 功能的使用方法

    通过压缩合并js文件和css文件,可以减少 服务器的响应 次数和 流量,可以大大减小服务器的压力,对网站优化有比较明显的帮助!压缩合并 css 文件和js文件是网站优化的一个 比较常用的方法. ASP ...

  7. asp.net MVC中使用Html.Checkbox提示该字符串未被识别为有效的布尔值错误的解决方法

    在asp.net MVC中使用Html.CheckBox提交后出现该字符串未被识别为有效的布尔值错误,或从类型“System.String”到类型“System.Boolean”的参数转换失败. 错误 ...

  8. ASP.NET MVC中对Model进行分步验证的解决方法

    原文:ASP.NET MVC中对Model进行分步验证的解决方法 在我之前的文章:ASP.NET MVC2.0结合WF4.0实现用户多步注册流程中将一个用户的注册分成了四步,而这四个步骤都是在完善一个 ...

  9. Asp.net mvc 中Action 方法的执行(二)

    [toc] 前面介绍了 Action 执行过程中的几个基本的组件,这里介绍 Action 方法的参数绑定. 数据来源 为 Action 方法提供参数绑定的原始数据来源于当前的 Http 请求,可能包含 ...

随机推荐

  1. ARM Compiler toolchain Compiler -- Supported ARM architectures

    --cpu=name This option enables code generation for the selected ARM processor or architecture. Synta ...

  2. Android多线程研究(1)——线程基础及源代码剖析

    从今天起我们来看一下Android中的多线程的知识,Android入门easy,可是要完毕一个完好的产品却不easy,让我们从线程開始一步步深入Android内部. 一.线程基础回想 package ...

  3. codechef Jewels and Stones 题解

    Soma is a fashionable girl. She absolutely loves shiny stones that she can put on as jewellery acces ...

  4. acdream 1738 世风日下的哗啦啦族I 分块

    世风日下的哗啦啦族I Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acdream.info/problem?pid=1738 Descri ...

  5. 日志记录到txt文件

    using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Web;usi ...

  6. 【JavsScript】XMLHttpRequest Level 2 使用指南

    XMLHttpRequest是一个浏览器接口,使得Javascript可以进行HTTP(S)通信. 最早,微软在IE 5引进了这个接口.因为它太有用,其他浏览器也模仿部署了,ajax操作因此得以诞生. ...

  7. MySQL mysqldump数据导出详解 --dump-slave 注意事项

    http://www.cnblogs.com/chenmh/p/5300370.html 介绍 在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工 ...

  8. 在加载模块时出现cannot insert '*.ko': Device or resource busy错误

    制作了一个模块,在加载是出现了cannot insert '*.ko': Device or resource busy错误. 原因: 是由于模块使用的是静态分配设备号,而这个设备号已经被系统中的其他 ...

  9. 功能分解——Android下画分时图与k线图有感

    最近工作极度繁忙,已经好久没有更新博客了,总感觉要是再不抽空总结总结点东西,分分钟就会被懒惰的状态给打到了.同时也希望同学们谨记,如果你已经决定要坚持某些正确的东西,比如背完某章单词,看一完本书抑或是 ...

  10. Java再学习——关于ConcurrentHashMap

    ConcurrentHashMap提供了和Hashtable以及SynchronizedMap中所不同的锁机制. 1,在并发方面, ConcurrentHashMap提供了好得多的并发性.多个读操作几 ...