首页 > 其他 > 详细

处理FormCollection字段的帮助类

时间:2021-05-13 20:10:10      阅读:27      评论:0      收藏:0      [点我收藏+]
 1         /// <summary>
 2         /// 利用反射机制将formCollection中的键值对的值赋值给对象对应属性,并确保类型一致性
 3         /// </summary>
 4         /// <typeparam name="T">实体泛型</typeparam>
 5         /// <param name="t">外部操作的全新的实体ref</param>
 6         /// <param name="form">form表单</param>
 7         /// <returns></returns>
 8         public static int ToModel<T>(ref T t, IFormCollection form)
 9         {
10             int u = 0;
11             var pi = t.GetType().GetProperties();
12             foreach (var p in pi)
13             {
14                 if (form.TryGetValue(p.Name, out StringValues vs))
15                 {
16                     try
17                     {
18                         if (vs.ToArray()[0] == "undefined")
19                             continue;
20                         p.SetValue(t, Convert.ChangeType(vs.ToArray()[0], p.PropertyType), null);//反射赋值给对象的属性,同时转换类型
21                         u++;
22                     }
23                     catch (Exception ex)
24                     {
25                         NLogHelper.Error(ex.Message);
26                     }
27                 }
28             }
29             return u;
30         }

使用

 1         /// <summary>
 2         /// 测试Formdata向Model转换
 3         /// </summary>
 4         /// <param name="formData"></param>
 5         /// <returns></returns>
 6         [HttpPost]
 7         public IActionResult FormDataToModel([FromForm]IFormCollection formData)
 8         {
 9             var view = new TestModel();
10             FormDataHelper.ToModel(ref view, formData);
11             return new JsonResult(view);
12         }
13         class TestModel
14         {
15             public int IntVal { get; set; }
16             public string StringVal { get; set; }
17             public double DoubleVal { get; set; }
18             public float FloatVal { get; set; }
19             public DateTime DateTimeVal { get; set; }
20 }

测试方法
技术分享图片

 

 转换结果

技术分享图片

 

 

TODO:

后续研究一下需要增加List类型或泛型的转换

处理FormCollection字段的帮助类

原文:https://www.cnblogs.com/5MBPerSec/p/14764098.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!