• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    ASP.NET中实现把form表单元素转为实体对象或集合

    简介:

    做WEBFROM开发的同学都知道后台接收参数非常麻烦

    虽然MVC中可以将表单直接转为集实,但不支持表单转为 LISTT>这种集合

    单个对象的用法:

    表单:

    复制代码 代码如下:

    input name='id'  value='1' >
    input name='sex'  value='男' >

    后台:

    复制代码 代码如下:

    //以前写法
                DLC_category d = new DLC_category();
                d.sex = Request["sex"];
                d.id = Convert.ToInt32(Request["id"]);


                //现在写法
                var category = RequestToModel.GetSingleFormDLC_category>();

    集合对象的用法:

    表单:

    复制代码 代码如下:

    input name='id'  value='1' >
    input name='sex'  value='男' >
     
     
    input name='id'  value='2' >
    input name='sex'  value='女' >
     
    input name='id'  value='3' >
    input name='sex'  value='女' >

    后台:
    复制代码 代码如下:

      ListDLC_category> categoryLists = RequestToModel.GetListByFormDLC_category>();

    源码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
     
    namespace SyntacticSugar
    {
      /// summary>
      /// ** 描述:表单帮助类
      /// ** 创始时间:2015-4-17
      /// ** 修改时间:-
      /// ** 作者:sunkaixuan
      /// ** qq:610262374 欢迎交流,共同提高 ,命名语法等写的不好的地方欢迎大家的给出宝贵建议
      /// /summary>
      public class RequestToModel
      {
     
        /// summary>
        /// 提交表单通过反射获取单个像
        /// 注意:表单控件name必包含对应类中的第一个字段,否则将报错
        /// /summary>
        public static T GetSingleFormT>() where T : new()
        {
          T t = SetListT>(null, 0).Single();
          return t;
        }
     
     
        /// summary>
        /// 提交表单通过反射获取单个像
        /// 注意:表单控件name必包含对应类中的第一个字段,否则将报错
        /// param name="appstr">控件前缀,比如 name="form1.sex" appstr可以设为form1/param>
        /// /summary>
        public static T GetSingleFormT>(string appstr) where T : new()
        {
          T t = SetListT>(appstr, 0).Single();
          return t;
        }
     
        /// summary>
        /// 提交表单通过反射获取多个对像
        /// 注意:表单控件name必包含对应类中的第一个字段,否则将报错
        /// /summary>
        /// typeparam name="type">/typeparam>
        /// param name="type">/param>
        /// returns>/returns>
        public static ListT> GetListByFormT>() where T : new()
        {
          ListT> t = SetListT>(null, 0);
          return t;
        }
     
        /// summary>
        /// 提交表单通过反射获取多个对像
        /// 注意:表单控件name必包含对应类中的第一个字段,否则将报错
        /// /summary>
        /// typeparam name="type">/typeparam>
        /// param name="appstr">控件前缀,比如 name="form1.sex" appstr可以设为form1/param>
        /// returns>/returns>
        public static ListT> GetListByFormT>(string appstr) where T : new()
        {
          ListT> t = SetListT>(appstr, 0);
          return t;
        }
     
     
        /// summary>
        /// 提交表单通过反射获取多个对像
        /// /summary>
        /// typeparam name="type">/typeparam>
        /// param name="appstr">控件前缀,比如 name="form1.sex" appstr可以设为form1/param>
        /// typeparam name="index">表单控件中第一个控件,对应类中字段在该类中的索引号,特殊情况可以是第二第三控件/typeparam>
        /// returns>/returns>
        private static ListT> GetListByFormT>(string appstr, int index) where T : new()
        {
          ListT> t = SetListT>(appstr, index);
          return t;
        }
     
     
     
        private static ListT> SetListT>(string appendstr, int index) where T : new()
        {
          ListT> t = new ListT>();
          try
          {
            var properties = new T().GetType().GetProperties();
            var subNum = System.Web.HttpContext.Current.Request[appendstr + properties[index].Name].Split(',').Length;
            for (int i = 0; i  subNum; i++)
            {
              var r = properties;
              var model = new T();
              foreach (var p in properties)
              {
                string pval = System.Web.HttpContext.Current.Request[appendstr + p.Name + ""];
                if (!string.IsNullOrEmpty(pval))
                {
                  pval = pval.Split(',')[i];
                  string pptypeName = p.PropertyType.Name;
                  p.SetValue(model, Convert.ChangeType(pval, p.PropertyType), null);
                }
              }
              t.Add(model);
            }
          }
          catch (Exception ex)
          {
     
     
            throw ex;
          }
     
     
          return t;
        }
      }
    }
    

    您可能感兴趣的文章:
    • ASP.NET中实现把Json数据转换为ADO.NET DataSet对象
    • ASP.NET自带对象JSON字符串与实体类的转换
    • .NET core高性能对象转换示例代码
    上一篇:ASP.NET中实现根据匿名类、datatable、sql生成实体类
    下一篇:ASP.NET实现的简单易用文件上传类
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    ASP.NET中实现把form表单元素转为实体对象或集合 ASP.NET,中,实现,把,form,表单,