当我将一个Guids数组作为参数直接放在我的web api操作结果中时,它找不到请求体中的任何guids并绑定它们,例如
[HttpPost]
public IHttpActionResult AddStores([FromBody]Guid[] Ids)
{
...
}
虽然我确实在请求正文中包含了in,但它是一个guids数组。
只有当我将i放在模型中时,模型绑定器才会在请求正文中找到我的i。
例如:
public class AddStoresRequest
{
public Guid[] Ids { get; set; }
}
[HttpPost]
public IHttpActionResult AddStoreUser(AddStoresRequest request)
{
...
}
在这种情况下,它确实可以正确地找到ids。为什么会出现这种异常?当我在方法参数中直接使用in作为参数时,为什么模型绑定器失败?
当我构建请求时,我不使用模型...我只是在请求主体中放入了一个名为Ids的数组。
发布于 2018-02-02 13:48:37
默认情况下,当添加Guid[] it来请求时,您的json序列化程序会将其映射为以下内容:
{
"Ids":["58b84557-1899-4354-b5ac-1d97c2b95e1b", "db7106d7-ba8a-44cc-b34d-90bec9b2ca3f"]
}
这就是为什么你必须使用第二个动作实现。
如果你想使用第一个实现,你必须在body中发送类似这样的东西:
["58b84557-1899-4354-b5ac-1d97c2b95e1b", "db7106d7-ba8a-44cc-b34d-90bec9b2ca3f"]
您必须使用自定义序列化或JArray来实现这一点。
https://stackoverflow.com/questions/48583909
复制相似问题