这个Task前置知识点:
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]
错误,正确的解决方案, 接受一个对象 和 字符串。这个方法我理解是创建为可迭代对象:
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"))