【问题标题】:Unable to parse Array Type Query string to List of Object无法将数组类型查询字符串解析为对象列表
【发布时间】:2019-11-26 13:07:26
【问题描述】:

我正在 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 asp.net-core-mvc custom-model-binder


    【解决方案1】:

    你当前解码的查询字符串看起来像

    take=10&skip=0&page=1&pageSize=10&sort[0][field]=price&sort[0][dir]=asc
    

    所以使用以下格式从您的客户端应用程序传递查询字符串参数

    sort[0].field=price&sort[0].dir=asc
    

    【讨论】:

      【解决方案2】:

      有人可能有更好的答案,但如果是我,我会稍微简化一下我的查询字符串并扁平化模型。所以查询字符串可能是:

      take=10&skip=0&page=1&pageSize=10&sortfield1=price&sortdir1=asc&sortfield2=otherfield&sortdir2=desc

      然后在模型中将 public List<Sort> Sort 替换为扁平属性:

       public string SortField1 {get; set;}
       public string SortDir1   {get; set;}
       public string SortField2 {get; set;}
       public string SortDir2   {get; set;}
      

      您可以根据需要添加任意数量的这些扁平属性。它并不优雅,但它完成了工作。然后,如果您需要构建排序列表,您可以轻松地从这些属性构建它。

      【讨论】:

      • 没关系,有各种解决方法,但我正在寻找我的代码出现此问题的原因。我可能遗漏了什么。
      • @SundarSingh 怎么样?我确实回答了你的问题“你能建议一个解决方法吗?”
      猜你喜欢
      • 2017-03-22
      • 2012-10-28
      • 2011-07-20
      • 1970-01-01
      • 1970-01-01
      • 2015-07-14
      • 1970-01-01
      • 2022-11-24
      • 1970-01-01
      相关资源
      最近更新 更多