ABP实战笔记:导出用户信息Excel表格
这个Task前置知识点:
ABP学习笔记:分页的实现_董厂长的博客-CSDN博客
ABP学习笔记:初步理解仓储_董厂长的博客-CSDN博客
ABP学习笔记:自定义HttpMethod的两种风格_董厂长的博客-CSDN博客
ABP学习笔记:使用EPPlus以表格导出数据_董厂长的博客-CSDN博客
遇到的Http请求的问题:HTTP请求中的Form Data与Request Payload的区别_董厂长的博客-CSDN博客
首先前端,get请求,传递一个DTO类过去,转JSON
const queryParams = JSON.stringify(params)
后端得到参数,开始反序列化,切记你已经在后端定义好FOODTO这个类:
FOODto queryConditionsObj = JsonConvert.DeserializeObject(queryConditions);//反序列化
然后扔到查询函数里进行LINQ查询,一般来说,得到的返回值,还是个DTO类。
此处出现问题,由于我有两个参数传递进来,一个DTO类,被反序列化了。另一个是string,后端分割为数组了。我想通过数组A的元素值,来拿到类B的属性值:
B.A[0]
错误,正确的解决方案, 接受一个对象 和 字符串。这个方法我理解是创建为可迭代对象:
Expression.MakeIndex(Expression, PropertyInfo, IEnumerable创建一个 IndexExpression,它表示访问对象中的索引属性。
https://docs.microsoft.com/zh-cn/dotnet/api/system.linq.expressions.expression.makeindex?redirectedfrom=MSDN&view=net-6.0#System_Linq_Expressions_Expression_MakeIndex_System_Linq_Expressions_Expression_System_Reflection_PropertyInfo_System_Collections_Generic_IEnumerable_System_Linq_Expressions_Expression__
public static object GetPropertyValue(object info, string field){if (info == null)return null;Type t = info.GetType();IEnumerable property = from pi in t.GetProperties() where pi.Name.ToLower() == field.ToLower() select pi;return property.First().GetValue(info, null);}
看返回值还是一个对象,但是这个对象内只包含一个值,使用类型转换即可:
object to string
JsonConvert.SerializeObject(GetPropertyValue(OBJ, "name"))
object to 数字
int.Parse(GetPropertyValue(OBJ, "name"))
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
