NancyFX使用列表参数后绑定到对象
我正在使用Nancy,我已经创建了一个基本模型,上面有一个List属性。当我使用下面的GET方法时,我得到了预期的JSON输出。然而,当我尝试发回相同的JSON时,我最终得到了一个带有空字符串列表的对象。我创建了两个属性,只是为了验证我的问题不是因为将DataPoints参数实例化为构造函数中的新列表。有人知道为什么这不能正常返回吗 从初始Get返回的JSON对象NancyFX使用列表参数后绑定到对象,nancy,Nancy,我正在使用Nancy,我已经创建了一个基本模型,上面有一个List属性。当我使用下面的GET方法时,我得到了预期的JSON输出。然而,当我尝试发回相同的JSON时,我最终得到了一个带有空字符串列表的对象。我创建了两个属性,只是为了验证我的问题不是因为将DataPoints参数实例化为构造函数中的新列表。有人知道为什么这不能正常返回吗 从初始Get返回的JSON对象 { "dataPoints": [ "0", "1", "2", "3",
{
"dataPoints": [
"0",
"1",
"2",
"3",
"4"
],
"dataPoints2": [
"0",
"1",
"2",
"3",
"4"
]
}
从Post返回的JSON对象:
{
"dataPoints": [],
"dataPoints2": []
}
类别:
public class BasicModel
{
private List<string> _dataPoints;
public List<string> DataPoints
{
get
{
if (_dataPoints == null)
{
_dataPoints = new List<string>();
}
return _dataPoints;
}
set
{
_dataPoints = value;
}
}
public List<string> DataPoints2 { get; set; }
public BasicModel()
{
DataPoints2 = new List<string>();
}
public BasicModel(int idx)
{
DataPoints2 = new List<string>();
for (int i = 0; i < idx; i++)
{
DataPoints.Add(i.ToString());
DataPoints2.Add(i.ToString());
}
}
}
张贴方法:
Post["/basicmodel"] = parameters =>
{
BasicModel m = new BasicModel();
this.BindTo(m);
return Negotiate
.WithStatusCode(HttpStatusCode.OK)
.WithModel(m)
.WithView("default");
};
您可能会遇到一个使用BindTo
创建新实例的问题,即使您给出了一个实例
您应该能够使用Bind
而不是BindTo
,并让Bind返回一个新对象:
Post["/basicmodel"] = parameters =>
{
BasicModel m = this.Bind();
return Negotiate
.WithStatusCode(HttpStatusCode.OK)
.WithModel(m)
.WithView("default");
};
Post["/basicmodel"] = parameters =>
{
BasicModel m = this.Bind();
return Negotiate
.WithStatusCode(HttpStatusCode.OK)
.WithModel(m)
.WithView("default");
};