最近的 NancyFX 支持列表绑定https://github.com/NancyFx/Nancy/wiki/Model-binding但它对我不起作用。
对于集合模型绑定测试,我创建了一个类似 stackoverflow 的 Question 模型:
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>
但它不会将 Answers 集合绑定到 Question 对象,而问题的 Name 和 Id 已正确绑定。
它有什么问题以及如何使这个嵌套集合正确绑定?
稍后我将尝试将一组评论绑定到 Question 和 Answer 对象。