NancyFX使用列表参数后绑定到对象

NancyFX使用列表参数后绑定到对象,nancy,Nancy,我正在使用Nancy,我已经创建了一个基本模型,上面有一个List属性。当我使用下面的GET方法时,我得到了预期的JSON输出。然而,当我尝试发回相同的JSON时,我最终得到了一个带有空字符串列表的对象。我创建了两个属性,只是为了验证我的问题不是因为将DataPoints参数实例化为构造函数中的新列表。有人知道为什么这不能正常返回吗 从初始Get返回的JSON对象 { "dataPoints": [ "0", "1", "2", "3",

我正在使用Nancy,我已经创建了一个基本模型,上面有一个List属性。当我使用下面的GET方法时,我得到了预期的JSON输出。然而,当我尝试发回相同的JSON时,我最终得到了一个带有空字符串列表的对象。我创建了两个属性,只是为了验证我的问题不是因为将DataPoints参数实例化为构造函数中的新列表。有人知道为什么这不能正常返回吗

从初始Get返回的JSON对象

{
   "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");
};