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,它表示访问对象中的索引属性。 icon-default.png?t=M276https://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"))


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部