Winform也借MVC的TryUpdateModel一用~

我们在使用MVC的时候,给model赋值只需要 TryUpdateModel(model) 就搞定了,而在webForm,winForm中,我们要写长长的 xx.xx = Convert.Toint( xxx.text) ...如果一个model有30个属性,就要写30行,看着都累!

这里有一篇 webForm 的文章:http://www.cnblogs.com/coolcode/archive/2009/08/15/1546936.html 借用了一下~

那winForm能否也借用呢?

我尝试写了一个扩展类(只实现了int,string,datetime类型,其它的可以扩展)

    public class Expand : Form
    {
        public void TryUpdateModel<TModel>(ref TModel model)
        {
            Type mod = model.GetType();
            PropertyInfo[] property = mod.GetProperties();
            object obj = Activator.CreateInstance(mod);
            foreach (PropertyInfo pi in property)
            {
                if (Controls.ContainsKey(pi.Name))
                {
                    if (pi.PropertyType == typeof(DateTime))
                    {
                        try
                        {
                            pi.SetValue(obj, ((DateTimePicker)Controls[pi.Name]).Value, null);
                        }
                        catch { }
                    }
                    else if (pi.PropertyType == typeof(int))
                    {
                        try
                        {
                            pi.SetValue(obj, int.Parse(Controls[pi.Name].Text), null);
                        }
                        catch { }
                    }
                    else
                    {
                        try
                        {
                            pi.SetValue(obj, Controls[pi.Name].Text, null);
                        }
                        catch { }
                    }
                }
            }
            model = (TModel)obj;
        }
    }

  然后,我们就可以

            var model = new Class1();

            this.TryUpdateModel<Class1>(ref model);

  不过,看着ref那么碍眼呢?

不知道各位大神 ~ 有没有更好点的办法

时间: 2024-10-02 02:14:30

Winform也借MVC的TryUpdateModel一用~的相关文章

二十八、带给我们一种新的编码思路——EFW框架CS系统开发中的MVC模式探讨

回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://pan.baidu.com/s/1eQCc69G       前言:记得最初写出Winform版MVC的代码是在公司的一个产品中,产品有几个界面功能比较多,一个界面窗体的代码尽然有1万多行代码,让我们在维护这几个界面的时候非常的痛苦,你可能想可以把这个大的界面拆分成几个小的界面在集成在一起不就好了,但实际上这样

TryUpdateModel

MSDN参考 https://msdn.microsoft.com/zh-cn/library/system.web.mvc.controller.tryupdatemodel.aspx 相关博文 http://demo.tc/Post/655 http://www.it165.net/pro/html/201305/5724.html

对Controller的单元测试

在ASP.NET MVC项目的Controller中存在逻辑代码,也需要单元测试.查阅到的资料上,有说ASP.NET MVC框架在设计时便考虑到了满足可测试性,所以相对aspx.Winform来说针对MVC的单元测试要更容易. 一 基本使用 原来对Controller的单元测试的并不像此前自己想的那么复杂,本质还是对一个代码单元的功能测试.如果不涉及HttpContext的模拟,使用方法基本与之前对Service层的单元测试方法一致,但会多了一些Arrange操作,因为Controller又会调

ASP.NET 知识体系结构

以下是我根据自身的情况来总结的ASP.NET 知识体系 ASP.NET 知识体系 C#--C#-知识梳理 ASP.NET WinForm ASP.NET MVC EF

c#项目架构搭建经验

读过.Net项目中感觉代码写的不错(备注1)有:bbsMax(可惜唧唧喳喳鸟像消失了一样),Umbraco(国外开源的cms项目),Kooboo(国内做开源cms).本人狭隘,读的代码不多,范围也不广泛. 你是否一直渴望自己能开发出一套系统架构,让人读起来感觉到程序有条理,结构很合理. 好的架构师需要具备:   1.项目经验丰富.(应该是从一堆堆项目中走出来的,丰富的经验比大篇大论的理论更深刻.) 2.知识的全面性,基础的扎实程度.(知识的全面性不要求你什么都知道,起码要能熟练掌握WCF,Sil

Java web 学习之旅

java web学习之旅 来公司十天了,感觉已经慢慢地融入了这个环境中,几个学长人都很好,都是在他们帮助下,我才能比较顺利的开始了学习java web的旅途. 来这里学习的第一个阶段是做一个简单的用户管理系统,其实,这对于我这个刚开始接触java web的“新手”来说还是有一点挑战的,所以在最开始制定学习计划的时候,我有意识的把时间拖的比较长,希望我又足够的时间来完成这个项目.而情况却比我想象的要好很多,现在8号我已经完成了,比预期的22号提前了十多天,可能是学习的过程因为有学长的帮助,比较简单

关于asp.net MVC 中的TryUpdateModel方法

有比较才会有收货,有需求才会发现更多. 在传统的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.Count

【WEB API项目实战干货系列】- API访问客户端(WebApiClient适用于MVC/WebForms/WinForm)(四)

这几天没更新主要是因为没有一款合适的后端框架来支持我们的Web API项目Demo, 所以耽误了几天, 目前最新的代码已经通过Sqlite + NHibernate + Autofac满足了我们基本的Demo需求. 按照既定的要求,我们的API会提供给众多的客户端使用, 这些客户端可以是各种Web站点, APP, 或者是WinForm, WPF, Silverlight等诸如此类的应用,将来还有可能是各种Iot等物联网设备的应用,Restful API凭借其诸多优势,已经在移动互联网的时代火了一

MVC in WinForm

最近在利用C# WinForm进行项目编码的时候发现,如果不恰当的使用Partial关键字或者是User Control,会导致逻辑代码和UI代码耦合度过高,往往会造成一个页面下面会有将近2000行代码……这,当然不是我所要看到的,我急需要一种模式能够将代码分散,并且最好做到逻辑和UI的分离.找来找去,发现MVC模式最好用,就用这个吧. 当然,拿来用,肯定得明白它的实现方式,对于MVC这种模式,我也已经不是第一次接触了,就来简单的说点吧. MVC基本概念 MVC,指的是Model View Co