在不使用FromQuery(Name =“”)

我发现ASP.NET Core的绑定不一致。

public IactionResult Do(string foo,int bar) // works
public IactionResult DoWithArray(int[] bars) // 415
public IactionResult DoWithDTO([FromQuery] DTO dto) // works
public IactionResult DoWithAttribute([FromQuery] int[] bars) // 415
public IactionResult DoWithAtrributeName([FromQuery(Name = "bars")] int []bars) // works

方法“ Do”按预期方式工作。但是,方法“ DoWithArray”返回415。将数组放置在DTO和DTO中时,它会很好地绑定(即使我未指定Name)。 Mehtod“ DoWithAttribute”不起作用,并且仅当指定了Name时,该数组才能绑定。

我试图找出这种不一致的原因。我没有找到任何解释。也许我做错了,或者我在想错了。我有没有意识到的事情?这是正确的行为吗?有没有一种热方法可以绑定集合而无需使用不带名称的FromQueryAttribute或完全不使用FromQuneryAttribute?

我没有测试如果没有ApiControllerAttribute,行为是否会变得更合理。

编辑:集合查询字符串的格式为/api/foo?bars=5&bars=10

Edit2:在ASP.NET WebApi中,您可以像使用FromUriAttribute

public HttpResponseMessage DoWithArray([FromUri] int[] bars)

无需指定名称即可成功绑定数组

f1ac1010 回答:在不使用FromQuery(Name =“”)

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3106667.html

大家都在问