2013-09-20 4 views
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> 

Но он не связывает сбор ответов с объектом Вопроса, в то время как имя и идентификатор вопроса правильно привязаны.

Что не так с этим и как правильно вставить эту вложенную коллекцию?

Позже я попробую привязать коллекцию комментариев к объектам вопроса и ответа.

ответ

1

Кажется, что-то есть ошибка.

Это, похоже, не связывает Список & Список, равный нулю.

Кроме того, если вы сделаете это:

<form action="/" method="post"> 
<ul> 
    <li> 
     <input type="text" name="Name[0]" value="Question Name" /> 
     <input type="text" name="Id[0]" value="1" /> 
     <input type="text" name="Name[1]" value="Question Name2" /> 
     <input type="text" name="Id[1]" value="2" /> 
    </li> 
<ul> 
</form> 

Затем связывают с:

Post["/"] = parameters => 
    { 
     var model = this.Bind<List<Question>>(); 
     return 200; 
    }; 

Это даст вам 2 вещи с правильными значениями.

После того, как вы добавите ответы, входящие в него обратно, он не может связать вопрос.

Пожалуйста, авторизуйтесь вопрос в хранилище - https://github.com/NancyFx/Nancy/issues?milestone=&page=1&state=open

Если вы чувствуете, как расследование и отправить запрос тянуть еще лучше :)

Смежные вопросы