最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-27 22:38:28
文档

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

ASP.NET中实现把form表单元素转为实体对象或集合:简介: 做WEBFROM开发的同学都知道后台接收参数非常麻烦 虽然MVC中可以将表单直接转为集实,但不支持表单转为 LIST<T>这种集合 单个对象的用法: 表单: 代码如下: <input name='id' value='1' > <input name='s
推荐度:
导读ASP.NET中实现把form表单元素转为实体对象或集合:简介: 做WEBFROM开发的同学都知道后台接收参数非常麻烦 虽然MVC中可以将表单直接转为集实,但不支持表单转为 LIST<T>这种集合 单个对象的用法: 表单: 代码如下: <input name='id' value='1' > <input name='s


简介:

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

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

单个对象的用法:

表单:

代码如下:
<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.GetSingleForm<DLC_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='女' >

后台:
代码如下:
  List<DLC_category> categoryLists = RequestToModel.GetListByForm<DLC_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 GetSingleForm<T>() where T : new()
 {
 T t = SetList<T>(null, 0).Single();
 return t;
 }
 
 
 /// <summary>
 /// 提交表单通过反射获取单个像
 /// 注意:表单控件name必包含对应类中的第一个字段,否则将报错
 /// <param name="appstr">控件前缀,比如 name="form1.sex" appstr可以设为form1</param>
 /// </summary>
 public static T GetSingleForm<T>(string appstr) where T : new()
 {
 T t = SetList<T>(appstr, 0).Single();
 return t;
 }
 
 /// <summary>
 /// 提交表单通过反射获取多个对像
 /// 注意:表单控件name必包含对应类中的第一个字段,否则将报错
 /// </summary>
 /// <typeparam name="type"></typeparam>
 /// <param name="type"></param>
 /// <returns></returns>
 public static List<T> GetListByForm<T>() where T : new()
 {
 List<T> t = SetList<T>(null, 0);
 return t;
 }
 
 /// <summary>
 /// 提交表单通过反射获取多个对像
 /// 注意:表单控件name必包含对应类中的第一个字段,否则将报错
 /// </summary>
 /// <typeparam name="type"></typeparam>
 /// <param name="appstr">控件前缀,比如 name="form1.sex" appstr可以设为form1</param>
 /// <returns></returns>
 public static List<T> GetListByForm<T>(string appstr) where T : new()
 {
 List<T> t = SetList<T>(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 List<T> GetListByForm<T>(string appstr, int index) where T : new()
 {
 List<T> t = SetList<T>(appstr, index);
 return t;
 }
 
 
 
 private static List<T> SetList<T>(string appendstr, int index) where T : new()
 {
 List<T> t = new List<T>();
 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中实现把form表单元素转为实体对象或集合

ASP.NET中实现把form表单元素转为实体对象或集合:简介: 做WEBFROM开发的同学都知道后台接收参数非常麻烦 虽然MVC中可以将表单直接转为集实,但不支持表单转为 LIST<T>这种集合 单个对象的用法: 表单: 代码如下: <input name='id' value='1' > <input name='s
推荐度:
标签: 对象 转为 表单
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top