当我将一个Guids数组作为参数直接放在我的web api动作结果中时,它找不到我在请求体中的任何guid并绑定它们,例如。
[HttpPost]
public IHttpActionResult AddStores([FromBody]Guid[] Ids)
{
...
}
ids作为null传入,尽管我在请求体中包含了id作为guid数组。
只有当我在模型中放入ID时,模型绑定器才会在请求主体中找到我的ID。
e.g。
public class AddStoresRequest
{
public Guid[] Ids { get; set; }
}
[HttpPost]
public IHttpActionResult AddStoreUser(AddStoresRequest request)
{
...
}
在这种情况下,它确实找到了ID。为什么会出现这种异常现象?当我在方法参数中直接使用Ids作为参数时,为什么模型绑定器会失败?
我在构建请求时没有使用该模型...我只是在请求体中放入了一个名为Ids的数组。
答案 0 :(得分:3)
默认情况下,当Guid [] Ids被添加到请求时你的json序列化器将它映射到这样的东西:
{
"Ids":["58b84557-1899-4354-b5ac-1d97c2b95e1b", "db7106d7-ba8a-44cc-b34d-90bec9b2ca3f"]
}
这就是为什么你必须使用第二次动作实现。
如果你想使用第一次实现你必须在body中发送这样的东西:
["58b84557-1899-4354-b5ac-1d97c2b95e1b", "db7106d7-ba8a-44cc-b34d-90bec9b2ca3f"]
您必须使用自定义序列化或JArray来实现此目的。