【问题标题】:`[FromQuery]` IEnumerable<SomeObject> parsing in ASP.NET Core 3.1?`[FromQuery]` IEnumerable<SomeObject> 在 ASP.NET Core 3.1 中解析?
【发布时间】:2020-09-23 14:01:50
【问题描述】:

因此,当我测试 IEnumerable&lt;string&gt; 参数的绑定如何工作时,您只需在查询字符串中重复传递参数的名称,如下所示:?a=item1&amp;a=item2&amp;a=item3...

那么,如果我有一个IEnumerable&lt;SimpleObject&gt; a 类型的参数,我必须写什么,其中SimpleObject 定义如下:

public class SimpleObject
{
   public string Number { get; set; }
   public string Text { get; set; }
}

为了成功地将其绑定到所述对象的列表?或者该映射不存在这样的默认 ModelBinder? (在这种情况下,请提供一个示例 ModelBinder)

【问题讨论】:

  • 您不想对 GET 使用其他方法吗?您可以将参数作为带有标头的 json 字符串传递,然后将其解析为模型。

标签: c# asp.net-core model-view-controller model-binding model-validation


【解决方案1】:

默认模型绑定设置支持索引格式,其中每个属性都针对索引指定。最好用一个示例查询字符串来证明这一点:

?a[0].Number=1&a[0].Text=item1&a[1].Number=2&a[1].Text=item2

如图所示,这设置了以下键值对

  • a[0].Number = 1
  • a[0].Text = item1
  • a[1].Number = 2
  • a[2].Text = item2

这在官方文档中并没有完全涵盖,但在collections 上有一个部分,在dictionaries 上有一个部分。上面显示的方法是这些方法的组合。

【讨论】:

    猜你喜欢
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    相关资源
    最近更新 更多