我正在使用Nancy,我已经创建了一个带有List属性的基本模型。当我使用下面的GET方法时,我得到了预期的JSON输出。但是,当我尝试POST回相同的JSON时,我最终得到一个带有空字符串列表的对象。我创建了两个属性,只是为了验证我的问题不是因为将DataPoints参数实例化为构造函数中的新List。有没有人知道为什么这不能正常回归?
从初始获取返回的JSON对象
{
"dataPoints": [
"0",
"1",
"2",
"3",
"4"
],
"dataPoints2": [
"0",
"1",
"2",
"3",
"4"
]
}
从帖子返回的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());
}
}
}
获取方法:
Get["/basicModel/{idx}"] = parameters =>
{
int idx = Convert.ToInt32(parameters["idx"].ToString());
BasicModel m = new BasicModel(idx);
return Negotiate
.WithStatusCode(HttpStatusCode.OK)
.WithModel(m)
.WithView("default");
};
发布方法:
Post["/basicmodel"] = parameters =>
{
BasicModel m = new BasicModel();
this.BindTo(m);
return Negotiate
.WithStatusCode(HttpStatusCode.OK)
.WithModel(m)
.WithView("default");
};
答案 0 :(得分:0)
您可能会遇到know issue并BindTo
创建一个新实例,即使您提供了一个。
您应该能够使用Bind
而不是BindTo
,并且绑定返回一个新对象:
Post["/basicmodel"] = parameters =>
{
BasicModel m = this.Bind();
return Negotiate
.WithStatusCode(HttpStatusCode.OK)
.WithModel(m)
.WithView("default");
};