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

时间:2015-08-20 11:29:44

标签: c# asp.net asp.net-web-api model-binding

我正在按照Mrchief在这个问题中提供的答案:

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

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

screenshot: visual studio

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

"123, 435, 234"

那么这里发生了什么?

修改

网址:

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)

1 个答案:

答案 0 :(得分:2)

你与你所链接的情况完全不同。在链接中,他们使用查询字符串参数:

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

此处的密钥为categoryids,值为1,2,3,4

您使用的是路线参数:

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

所以这里的密钥是路由中{}占位符中声明的内容,在这种情况下为employeeIds,而值是传递的内容而不是实际网址中的占位符employeeIds=123,435,234

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

  1. 切换到查询字符串:multiple?employeeIds=123,435,234
  2. 或者更改网址:multiple/123,435,234(不确定它是否可以使用,但请随意尝试)