我的JavaScript客户端中有一个ContactCard
对象数组,我需要通过更改对象的PUT
请求更新其中一个对象到我的ServiceStack服务,但是我对于如何做到这一点感到非常难过。
这是我现在的DTO定义:
[Route("/directory/contactcard", "PUT")]
public class DirectoryContactCardUpdateRequest : IReturn<bool>
{
public ContactCard Card { get; set; }
}
客户端数组从ServiceStack服务填充,该服务返回List<ContactCard>
。
我正在尝试传递更改后的ContactCard
,但在服务端,每个属性都只是null
。
$.ajax({
url: '/RestApi/directory/contactcard',
type: 'PUT',
dataType: "json",
data: { Card: JSON.stringify(e.model) },
success: function (data) {
console.log(data);
},
error: function (e) {
alert("Error saving card");
}
});
看起来ServiceStack正确路由,因为我可以在服务中遇到断点,但为什么ContactCard
DTO的属性始终都是null
?
答案 0 :(得分:2)
您的请求对象属性始终为null
,因为您的请求数据未正确形成。您需要在data
电话中更改$.ajax
媒体资源的发送方式:
目前:
data: { Card: JSON.stringify(e.model) }
应该是:
data: JSON.stringify({ Card: e.model })
假设e.model
表示单个ContactCard
对象,那么现在应该可以正常工作。
答案 1 :(得分:0)
是的,实际上这就是问题
var myData = {
ContactCard: e.model
};
$.ajax({
data: JSON.stringify(myData)});
指示我指向正确的方向!