我有一个 F# WebAPI 项目,由于某种原因,Post 方法的参数始终设置为 null。
(名字都是匿名的)
这是控制器:
type TestController() =
inherit ApiController()
member x.Get () =
getValues ()
member x.Post ([<FromBody>] values: Values) =
storeValues values
记录Values
是这样定义的:
type TypeA = {
Id: string
....
}
....
type Values = {
AValues: list<TypeA>
BValues: list<TypeB>
CValues: list<TypeC>
}
在我看来,我对 API 进行 POST 调用,如下所示:
return $.ajax({
type: "POST",
url: url,
data: JSON.stringify(params),
contentType: "application/json",
beforeSend: function (jqXHR) { jqXHR.setRequestHeader("X-HTTP-Method", type); }
});
从哪里data
出来:
{
"AValues":[{"Id":"blahblah", ....}],
"BValues":[...],
"CValues":[...]
}
我更新了 JS 以使data
评估为:
{
"Values":
{
"AValues":[{"Id":"blahblah", ....}],
"BValues":[...],
"CValues":[...]
}
}
现在调试器抛出一个空引用异常并说请求为空(断点在我的记录定义上)。
问题是它确实命中了控制器中的 Post 方法,但values
始终设置为 null。