Arrays 无法将数组类型查询字符串解析为对象列表
我正在ASP.net核心MVC 6应用程序中尝试一些分页和排序工作。但当我传递类似数组的查询字符串时,MVC操作无法将其解析为列表 查询字符串如下所示: take=10&skip=0&page=1&pageSize=10&sort%5B0%5D%5Bfield%5D=price&sort%5B0%5D%5Bdir%5D=asc 它的模型如下所示: 这是我在服务器上得到的查询字符串: 排序数组或列表的计数始终为0。Arrays 无法将数组类型查询字符串解析为对象列表,arrays,asp.net-core-mvc,custom-model-binder,Arrays,Asp.net Core Mvc,Custom Model Binder,我正在ASP.net核心MVC 6应用程序中尝试一些分页和排序工作。但当我传递类似数组的查询字符串时,MVC操作无法将其解析为列表 查询字符串如下所示: take=10&skip=0&page=1&pageSize=10&sort%5B0%5D%5Bfield%5D=price&sort%5B0%5D%5Bdir%5D=asc 它的模型如下所示: 这是我在服务器上得到的查询字符串: 排序数组或列表的计数始终为0。 你能推荐一个工作环境吗。它应该正确地解析它,但不能得到错误的地方。有人可能会
你能推荐一个工作环境吗。它应该正确地解析它,但不能得到错误的地方。有人可能会有更好的答案,但如果是我,我会稍微简化查询字符串并将模型展平。因此,查询字符串可能是:
take=10&skip=0&page=1&pageSize=10&sortfield1=price&sortdir1=asc&sortfield2=otherfield&sortdir2=desc
然后在模型中,用展平属性替换公共列表排序
:
public string SortField1 {get; set;}
public string SortDir1 {get; set;}
public string SortField2 {get; set;}
public string SortDir2 {get; set;}
可以根据需要添加任意数量的这些展开特性。这并不优雅,但它完成了任务。然后,如果您需要构建排序列表,您可以轻松地从这些属性构建它。您当前解码的查询字符串如下所示
take=10&skip=0&page=1&pageSize=10&sort[0][field]=price&sort[0][dir]=asc
因此,请使用以下格式从客户端应用程序传递查询字符串参数
sort[0].field=price&sort[0].dir=asc
这很好,有各种各样的解决方法,但我正在寻找在我的代码中出现这个问题的原因。我可能遗漏了什么。@SundarSingh和upvote怎么样?。我确实回答了你的问题“你能提出一个解决办法吗?”