我的自定义模型绑定器的 AttemptedValue 包含键和值

The AttemptedValue of my custom modelbinder contains both key and value

我正在关注 Mrchief 在这个问题中提供的答案:

How to pass an array of integers to a asp.net web api rest service

我遇到的问题是 AttemptedValue 包含数组的 key(见下面的屏幕截图)。

将此字符串转换为数组的代码期望 AttemptedValue 字符串如下所示:

"123, 435, 234"

这是怎么回事?


编辑

url:

https://localhost:44301/api/sickleaves/sick/multiple/employeeIds=123,435,234

端点签名:

[Route("api/sickleaves/sick/multiple/{employeeIds}")]
public async Task<IHttpActionResult> PostSick([ModelBinder(typeof(CommaDelimitedArrayModelBinder))] int[] employeeIds)

您的情况与 linked 完全不同。在 link 他们使用查询字符串参数:

/Categories?categoryids=1,2,3,4

这里的key是categoryids,value是1,2,3,4.

您使用的是路由参数:

multiple/{employeeIds}
multiple/employeeIds=123,435,234

所以这里的键是在路由的 {} 占位符中声明的任何内容,在这种情况下是 employeeIds,而值是传递的内容而不是实际 url 中的占位符, employeeIds=123,435,234.

要使您的自定义活页夹相关,您需要:

  1. 要么切换到查询字符串:multiple?employeeIds=123,435,234
  2. 或更改 URL:multiple/123,435,234(虽然不确定它是否有效,但请随意尝试)