一个简单的ASP.NET WebForm "Model Binder"

ASP.NET MVC 中有一个神器Model Binder,给开发带来很多便利,如果使用WebForm 开发的话,只能望洋兴叹了,不过人类是无法阻止程序猿解决问题的决心的。

废话不多说了,直接看看这个山寨版的 "Model Binder"

 

复杂类型使用示例

先定义几个简单的实体:

public class User
    {
        public int SysNo { get; set; }
        public string Name { get; set; }
        public bool Good { get; set; }
        public DateTime Birthday { get; set; }
        public Address Address { get; set; }
        public int[] Test { get; set; }
        public List<Order> Orders { get; set; }//不支持复杂列表类型的转换
    }
    public class Order
    {
        public string OrderID { get; set; }

    }
    public class Address
    {
        public User User { get; set; }
        public int SysNo { get; set; }
        public string Name { get; set; }
    }

 

然后看看界面上表单的样子

image

 

看看效果

imageimage

 

转换成功!!

 

如何判断用户没有输入或者转换失败呢?

很简单在Global中注册默认值

 protected void Application_Start(object sender, EventArgs e)
        {
            RequestBinder.RegistDefaultValue<int>(-999999);
            RequestBinder.RegistDefaultValue<DateTime>(DateTime.Parse("1900/01/01"));
        }

 

上面是复杂类型,对于简单的更不在话下了,只要指定表单的Name就可以了
int sysno = RequestBinder.UpdateModel<int>("SysNO");
源码下载:

http://files.cnblogs.com/dushouke/RequestBinder.rar

posted @ 2011-09-03 12:36 MicroCoder 阅读(...) 评论(...) 编辑 收藏