【发布时间】:2012-08-02 20:39:34
【问题描述】:
我有一个 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":[...]
}
}
现在调试器抛出一个空引用异常并说 Requests 为空(断点在我的记录定义上)。
问题在于它确实命中了控制器中的 Post 方法,但 values 始终设置为 null。
【问题讨论】:
-
JSON.stringify(params)产生什么?我的意思是您发送的 JSON 数据是什么? -
上面列出了。
{ "AValues":[{"Id":"blahblah", ....}], "BValues":[...], "CValues":[...] }
标签: .net json f# asp.net-web-api