ABP实战笔记:导出用户信息Excel表格

85 篇文章 0 订阅
本文介绍了ABP框架下如何处理分页、仓储、自定义HTTP请求方法及使用EPPlus进行数据导出。探讨了DTO参数传递、反序列化以及通过表达式访问类属性的方法,特别指出了解决多个参数传递问题的解决方案,包括使用Expression.MakeIndex来访问索引属性,并提供了获取对象特定属性值的辅助方法。
摘要由CSDN通过智能技术生成

这个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<FOODto>(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<System.Reflection.PropertyInfo> 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"))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董厂长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值