处理FormCollection字段的帮助类
Posted 五兆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了处理FormCollection字段的帮助类相关的知识,希望对你有一定的参考价值。
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字段的帮助类的主要内容,如果未能解决你的问题,请参考以下文章