最近の NancyFX はリスト バインディングhttps://github.com/NancyFx/Nancy/wiki/Model-bindingをサポートしていますが、うまくいきませんでした。
コレクション モデル バインディング テストのために、stackoverflow のような質問モデルを作成しました。
public class Question
{
public int Id { get; set; }
public string Name { get; set; }
public List<Answer> Answers { get; set; }
public List<Comment> Comments { get; set; }
}
public class Answer
{
public int Id { get; set; }
public string Name { get; set; }
public List<Comment> Comments { get; set; }
}
public class Comment
{
public int Id { get; set; }
public string Name { get; set; }
}
私はそれを次のようにバインドします:
Post["/question"] = parameters =>
{
Question question = this.Bind();
return View["question.html", question];
};
HTML形式で、さまざまなことを試しました:
<form action="/question" method="post">
<ul>
<li>
<input type="text" name="Name" value="Question Name" />
<input type="text" name="Id" value="1" />
</li>
<li>
<ul>
<li>
<input type="text" name="Answers[0].Name" value="Answer 1 Name" />
<input type="text" name="Answers[0].Id" value="1" />
</li>
<li>
<input type="text" name="Answers[1].Name" value="Answer 2 Name" />
<input type="text" name="Answers[1].Id" value="2" />
</li>
<li>
<input type="text" name="Answers[2].Name" value="Answer 3 Name" />
<input type="text" name="Answers[2].Id" value="3" />
</li>
</ul>
</li>
</ul>
<input type="submit" />
</form>
また:
<form action="/question" method="post">
<ul>
<li>
<input type="text" name="Name" value="Question Name" />
<input type="text" name="Id" value="1" />
</li>
<li>
<ul>
<li>
<input type="text" name="Question[Answers][0].Name" value="Answer 1 Name" />
<input type="text" name="Question[Answers][0].Id" value="1" />
</li>
<li>
<input type="text" name="Question[Answers][1].Name" value="Answer 2 Name" />
<input type="text" name="Question[Answers][1].Id" value="2" />
</li>
<li>
<input type="text" name="Question[Answers][2].Name" value="Answer 3 Name" />
<input type="text" name="Question[Answers][2].Id" value="3" />
</li>
</ul>
</li>
</ul>
<input type="submit" />
</form>
ただし、質問の名前とIDが正しくバインドされている間、回答のコレクションを質問オブジェクトにバインドしません。
何が問題で、このネストされたコレクションを正しくバインドする方法は?
後で、コメントのコレクションを Question オブジェクトと Answer オブジェクトの両方にバインドしてみます。