ASP.NET中实现Form表单字段值自动填充到操作模型中_.Net教程_Sublime_青云站长教程网
欢迎来到站长教程网!
  • 秒到短信接口 免费试用
  • 微信支付宝接口 秒结算
  • 中文网站排名|申请加入
  • 搜索引擎全站查询
  • 查询移动网站权重数据
  • 海外主机 台湾公司直销
  • Sublime

    当前位置:主页 > 软件教程 > Sublime >

    ASP.NET中实现Form表单字段值自动填充到操作模型中_.Net教程

    时间:2019-07-10|栏目:Sublime|点击:
  • 推荐:ASP.NET中的Cache使用介绍
    这篇文章主要介绍了ASP.NET中的Cache使用介绍,本文讲解了Cache 是怎么工作的、Cache 怎么创建及怎么销毁、什么时候用cache、cache 调用注意事项等内容,需要的朋友可以参考下 Cache 即高速缓存 ,我想非常多人对他的第一印象一定像我相同,感觉他一定能提高系统得性能和

       这篇文章主要介绍了ASP.NET中实现Form表单字段值自动填充到操作模型中,本文模仿MVC模式中的自动映射表单了模型,使用泛型和反射实现,需要的朋友可以参考下

      我们知道ASP.NET MVC有个强大的地方就是Form表单提交到action的时候,可以直接将Form的参数直接装配到action的参数实体对象中

      比如

       代码如下:

      action方法 Register(UserModel userModel)

      {

      .............................

      }

      在提交表单的时候,会自动讲表单里面的字段封装到对应的UserModel字段里面

      那么 WebForm里面可不可以也紫将呢?

      因为每次都要去获得数据,优秀的程序员应该要学会代码封装,代码复用,重复的工作不要做

      我们其实可以利用反射来实例化对象的(自动装配)

      好了废话不多....

      pageload里面很简单了

       代码如下:

      protected void Page_Load(object sender, EventArgs e)

      {

      if (!IsPost())

      {

      InitPage();//第一次访问呈现页面

      }

      else

      {

      UserModel userModel = AssembleModel(base.valueCollection);

      }

      }

      关键就是基类里面的AssembleModel 方法了

      基类里面

      我们首先获取到上下文的参数 IT404

       代码如下:

      protected NameValueCollection valueCollection = HttpContext.Current.Request.Params;

      基类很简单,就是将上下文的提交的参数存放到valueCollection

      然后再看AssembleModel方法了,这是一个泛型方法

      代码如下:

      ///

     

      /// 反射获取类的属性

      ///

     

      ///

      ///

      protected PropertyInfo[] GetPropertyInfoArray(Type type)

      {

      PropertyInfo[] props = null;

      try

      {

      object obj = Activator.CreateInstance(type);

      props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);

      }

      catch (Exception ex)

      {

      }

      return props;

      }

      ///

     

      /// 根据NameValueCollection 自动装配

      ///

     

      ///

      ///

      ///

      protected T AssembleModel(NameValueCollection valueCollection)

      {

      PropertyInfo[] propertyInfoList = GetPropertyInfoArray(typeof(T));

      object obj = Activator.CreateInstance(typeof(T), null);//创建指定类型实例

      foreach (string key in valueCollection.Keys)//所有上下文的值

      {

      foreach (var PropertyInfo in propertyInfoList)//所有实体属性

      {

      if (key.ToLower() == PropertyInfo.Name.ToLower())

      {

      PropertyInfo.SetValue(obj, valueCollection[key], null);//给对象赋值

      }

      }

      }

      return (T)obj;

      }

      很简单,就是遍历参数,然后用反射遍历出实体类的共有属性,然后根据名字name来匹配和赋值

      所以以后我们只需要一句代码 就能自动装配上从客户端存过来的值了

      代码如下:

      UserModel userModel = AssembleModel(base.valueCollection);

    上一篇:ASP.NET中的Cache使用介绍_.Net教程

    栏    目:Sublime

    下一篇:ASP.NET中Session和Cache的区别总结_.Net教程

    本文标题:ASP.NET中实现Form表单字段值自动填充到操作模型中_.Net教程

    本文地址:http://www.jh-floor.com/ruanjianjiaocheng/Sublime/2041.html

    您可能感兴趣的文章

    广告投放 | 联系我们 | 版权申明

    重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

    如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

    联系QQ:888888 | 邮箱:888888#qq.com(#换成@)

    Copyright © 2002-2017 青云站长教程网 版权所有 琼ICP备xxxxxxxx号