2

最近の 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 オブジェクトの両方にバインドしてみます。

4

1 に答える 1