将用户定义的类的实例作为数据传递给ServiceStack PUT

时间:2013-05-29 17:32:34

标签: c# javascript rest servicestack

我对ServiceStack和RESTful服务相对较新,我遇到了以下障碍:

我有一个类似于以下的ServiceStack请求对象(在C#中):

[Authenticate]
[Route("/product", "POST")]
[Route("/product/{productId}", "GET,PUT,DELETE")]
public class SomeProductRequest: IReturn<Dto.Product>
{
    public int ProductId{ get; set; } 
    public ProductStuff SomeProductProperties { get; set; }
}

我可以在客户端使用Javascript构建对象,为这样的PUT做准备:

var product = {
  productId: 100,
  someProductProperties: { id:5, name:"My Name" }
};

但是,只要请求到达服务器,SomeProductProperties将始终为null。实际上,我根本无法将用户定义的类型传递给服务器。只有基本的,烘焙的.NET类型似乎遍及线路(int,string等)

在请求对象中使用用户定义的类的属性是否有一些技巧?

非常感谢所有帮助! 谢谢!

1 个答案:

答案 0 :(得分:1)

在与同事讨论后结束了解决这个问题。为了其他人的利益,这就是我所做的:

在线路上发送复杂类型时,需要使用JSON.stringify()包装包含复杂类型的js对象,并传递生成的字符串:

var updatedUser = self.buildUserObjectFromGui();
$.ajax({
    type: 'PUT',
    contentType: "application/json",
    data: JSON.stringify(updatedUser),
    url: 'internal/user/' + this.options.userId
});