【发布时间】:2015-04-23 10:06:04
【问题描述】:
我有一个 ASP.NET Web API,它接受一个带有 UserModel 的 POST:
[HttpPost]
public object Post(UserModel userModel)
{
// some logic here
}
UserModel 是一个复杂类型,如下所示:
public class UserModel
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public AddressModel CurrentAddress { get; set; }
}
AddressModel 模型如下所示:
public class AddressModel
{
public string Country { get; set; }
public string City { get; set; }
public string Street { get; set; }
public string Number { get; set; }
}
我正在尝试从 javascript 调用此 API 并发送 JSON 对象。这是我要发送的 JSON 对象:
var user = {
Id: 1,
FirstName: 'Hello',
LastName: 'World',
CurrentAddress: {
Country: 'Israel',
City: 'Tel Aviv',
Street: 'Shalom',
Number: '5'
}
};
我在 Post 方法中得到的是 UserModel,其中 UserModel 字段填充了正确的信息,CurrentAddrent 地址已初始化,但发送的值不存在。父对象的值(UserModel 对象没问题)。
我在这里做错了什么?如何将复杂对象发送到 WebAPI 模型?
【问题讨论】:
-
应该不是
[FromBody] UserModel userModel? -
我肯定会使用 Fiddler 之类的工具仔细检查发送的 JSON
-
可能不相关,但您的类型并不真正匹配:
FirstName和LastName是ints,应该是strings -
在上面运行您的示例,纠正了
FirstName和LastName的类型,并从Post方法返回void而不是object,在我的机器上按预期工作。跨度> -
@Christian 你是对的 - 我在这里编写了代码作为示例,并在不注意的情况下复制和粘贴。我会修改帖子。谢谢。
标签: javascript c# json asp.net-web-api asp.net-ajax