模型绑定POST与NancyFx中的对象数组

时间:2012-10-22 18:44:07

标签: json data-binding post deserialization nancy

我有一个具有以下结构的json对象

{
 ContainerType: "Box",
 Items : [{Name: "Coin", Amount: 5}, {Name: "Spyglas", Amount : 1}]   
}

此对象在Nancy后端系统中有一个表示:

public string ContainerType {get; set}
public IEnumberable<Item> Items {get; set}

其中Item(如预期的)是一个非常简单的具有公共属性的对象:

public string Name {get; set;}
public double Amount {get; set;}

我的问题是,当我在我的模块中收到Post(基于NancyModule)时,只有字符串属性被绑定在这行代码中:

var model = this.databind<MyContainerModel>();

我尝试将列表类型更改为更具体(List&lt; MyContainerModel&gt;),更改为Arrays(MyContainerModel []),但似乎没有任何效果。

Nancy的git-repo演示部分中的数据绑定示例仅涉及整数的反序列化,但我的问题是使用javascript对象对数组进行反序列化。

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:23)

几个小时后我找到了解决方案。问题不在南希的部分,而是我的ajax帖子没有正确的标题。添加 contentType dataType 可以解决问题:

$.ajax({
    url: '/add',
    type: 'POST',
    data: normalModel,
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',

})

希望这有助于未来的读者!